Пакетная обработка: анализ строк TXT в массив

У меня есть желание читать строки из файла TXT в структуру Array для использования в командном файле, который я использую (для чтения в элементах конфигурации, в настоящее время жестко закодированных).

Несколько замечаний / предположений:

  1. Файл.TXT в том же каталоге, что и файл.BAT
  2. Только 2 столбца для разбора, неизвестное количество строк
  3. Данные Col1 и Col2 могут содержать пробелы, но без специальных символов
  4. Формат / разделитель файла.TXT может быть любым удобным для этой задачи: Пример: Col1 | Col2

Я просто ищу несколько указателей, чтобы начать меня.

Спасибо!

отметка

1 ответ

Решение

Моделирование двумерного численно-индексированного массива:

Содержание textfile.txt:

var 1,val 1
var 2,val 2
var 3,val 3

Содержание test.bat:

@echo off
setlocal enabledelayedexpansion

set idx=0

for /f "usebackq tokens=1* delims=," %%I in ("textfile.txt") do (
    set "var[!idx!][0]=%%~I"
    set "var[!idx!][1]=%%~J"
    set /a idx += 1
)

set var

Результирующий вывод:

var[0][0]=var 1
var[0][1]=val 1
var[1][0]=var 2
var[1][1]=val 2
var[2][0]=var 3
var[2][1]=val 3

Или вы можете имитировать ассоциативные массивы, чей формат пары ключ-значение может иметь больше смысла, если вы имеете дело с данными конфигурации.

Моделирование ассоциативного массива:

Содержание textfile.txt:

key 1=val 1
key 2=val 2
key 3=val 3

Содержание test.bat:

@echo off
setlocal

for /f "usebackq tokens=1* delims==" %%I in ("textfile.txt") do (
    set "config[%%~I]=%%~J"
)

set config

Результирующий вывод:

config[key 1]=val 1
config[key 2]=val 2
config[key 3]=val 3
Другие вопросы по тегам