如何使用批处理命令向 .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
。选择这样做最终取决于你自己。
我有一个文件 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
。选择这样做最终取决于你自己。