Пакетная обработка: анализ строк TXT в массив
У меня есть желание читать строки из файла TXT в структуру Array для использования в командном файле, который я использую (для чтения в элементах конфигурации, в настоящее время жестко закодированных).
Несколько замечаний / предположений:
- Файл.TXT в том же каталоге, что и файл.BAT
- Только 2 столбца для разбора, неизвестное количество строк
- Данные Col1 и Col2 могут содержать пробелы, но без специальных символов
- Формат / разделитель файла.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