Как добавить новую строку в уже существующий раздел в INI-файле с помощью пакетных команд? - PullRequest
0 голосов
/ 28 января 2020

У меня есть файл MyFile.ini с разделом в нем [MySection]

Я хочу добавить новую строку с возвратом после него под этим раздел через пакетный файл.

Вот пакетный файл, который я в последний раз пробовал:

@echo off
Set file=MyFile.ini
Set section=[MySection]
Set newline=MyNewValue=MyNewSetting

for /f "tokens=*" %%l in (%file%) do (
(echo %%l)>> "%file%"

if /i "%%l"=="%section%" (
(echo %newline%)>> "%file%"
) 
)

exit

Вышеуказанное не влияет на INI-файл.

Я хочу INI файл в go от этого:

[MySection]
SomeExistingValue=SomeExistingSetting

На это:

[MySection]
SomeExistingValue=SomeExistingSetting
MyNewValue=MyNewSetting

Любой ответ будет очень признателен, потому что, как только я это выясню, я могу повторить его и добавить несколько настроек к моему файлу, все это немного утомительно делать вручную, особенно когда я каждый раз делаю одно и то же с одним и тем же файлом. Имя файла никогда не меняется, раздел всегда существует, параметр, который я добавляю, никогда не существует, поэтому не нужно учитывать весь этот материал и не делать резервную копию файла, я могу просто распаковать архивированный файл, если он запутался.

1 Ответ

0 голосов
/ 28 января 2020

Вот пример, основанный на моей закомментированной методологии:

@Echo Off
Set "file=MyFile.ini"
Set "section=[MySection]"
Set "newline=MyNewValue=MyNewSetting"

Copy /Y "%file%" "%file%.bak">NUL 2>&1||Exit /B 1
(For /F "Tokens=1*Delims=]" %%G In (
        '^""%__AppDir__%find.exe" /N /V ""^<"%file%.bak"^"'
    )Do If /I "%%H"=="%section%" (Echo=%%H
        Echo %newline%)Else Echo=%%H)>"%file%"

Rem Del "%file%.bak"

У меня Rem задана последняя строка, потому что я думаю, что более важно убедиться, что результирующий файл, %file%, правильный до того, как вы Del съедите оригинал, %file%.bak. Выбор сделать это в конечном итоге остается за вами.

...