如何使用批处理命令向 .ini 文件中的现有部分添加新行?

How can I add a new line to an already existing section in a .ini file, with batch commands?

我有一个文件 MyFile.ini,里面有一个部分 [MySection]

我想通过批处理文件在该部分后添加一个带有 return 的新行。

这是我上次尝试的批处理文件:

@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

任何答案都将不胜感激,因为一旦我弄明白了,我就可以复制它并向我的文件添加几个设置,手动操作有点乏味,尤其是当我完全相同地做同样的事情时同一个文件,每次。文件名永远不会改变,该部分始终存在,我添加的设置永远不存在,所以不需要考虑所有这些东西,也不需要备份文件,如果它,我可以解压缩备份文件搞砸了。

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

@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 标记了最后一行,因为我认为在 Del 更改原始文件之前确保生成的文件 %file% 正确更为重要, %file%.bak。选择这样做最终取决于你自己。