Я пытаюсь читать .ini
файл со следующим форматом:
[SectionName]
total=4
[AnotherSectionName]
total=7
[OtherSectionName]
total=12
В основном я хочу распечатать определенные значения от .ini
файл, например, общее количество под OtherSectionName
сопровождаемый общим количеством от AnotherSectionName
.
Вот командный файл ( ini.cmd
), который вы можете использовать для извлечения соответствующих значений:
@setlocal enableextensions enabledelayedexpansion
@echo off
set file=%~1
set area=[%~2]
set key=%~3
set currarea=
for /f "usebackq delims=" %%a in ("!file!") do (
set ln=%%a
if "x!ln:~0,1!"=="x[" (
set currarea=!ln!
) else (
for /f "tokens=1,2 delims==" %%b in ("!ln!") do (
set currkey=%%b
set currval=%%c
if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" (
echo !currval!
)
)
)
)
endlocal
А вот стенограмма, показывающая его в действии (я вручную отступ для облегчения чтения):
c:\src>type ini.ini
[SectionName]
total=4
[AnotherSectionName]
total=7
[OtherSectionName]
total=12
c:\src>ini.cmd ini.ini SectionName total
4
c:\src>ini.cmd ini.ini AnotherSectionName total
7
c:\src>ini.cmd ini.ini OtherSectionName total
12
Чтобы использовать это в другом cmd
файле, просто замените строку echo% val%
ниже на то, что вы хотите сделать с ним):
for /f "delims=" %%a in ('call ini.cmd ini.ini AnotherSectionName total') do (
set val=%%a
)
echo %val%