如何使用批处理命令将新行添加到.ini文件中已存在的节中?

问题描述 投票:0回答:1

我有一个文件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文件从此开始:

[MySection]
SomeExistingValue=SomeExistingSetting

为此:

[MySection]
SomeExistingValue=SomeExistingSetting
MyNewValue=MyNewSetting

任何答案都将不胜感激,因为一旦我能弄清楚这一点,便可以将其复制并添加到我的文件中,那么手动进行操作会有些繁琐,尤其是当我对完全相同的文件执行完全相同的操作时,每次。文件名永不更改,该部分始终存在,我要添加的设置永远不存在,因此不需要考虑所有这些内容,也无需进行文件备份,如果已备份的文件可以解压缩搞砸了。

batch-file command echo ini
1个回答
0
投票

这是基于我评论的方法的一个示例:

@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是正确的更为重要。这样做的选择最终取决于您自己。

© www.soinside.com 2019 - 2024. All rights reserved.