我正在尝试从批处理文件中编辑一个简单的txt ini文件而不使用实用程序。
感谢先前由 paxdiablo 发布的代码,我可以使用以下代码的形式执行此操作。
但myfile.ini包含 thing 和 newthing 等变量。
我只想编辑第一个,而不是第二个(包括字符串“thing”)。
我不想更改/编辑 newthing 的值。
现在每个编辑都设置两个变量的值。
@echo off
set init=50M
set max=75M
setlocal enableextensions enabledelayedexpansion
for /f "tokens=* delims=" %%a in (myfile.ini) do (
set str1=%%a
call :morph
echo !str2!>>myfile_new.ini
echo !str2!
)
endlocal
goto :eof
:morph
set str2=
:morph1
if not "x!str1!"=="x" (
if "!str1:~0,6!"=="thing=" (
set str2=!str2!thing="!init!"
set str1=!str1:~12!
goto :morph1
)
if "!str1:~0,6!"=="thong=" (
set str2=!str2!thong="!max!"
set str1=!str1:~12!
goto :morph1
)
set str2=!str2!!str1:~0,1!
set str1=!str1:~1!
goto :morph1
)
goto :eof
myfile.ini
thing=xyz
thong=def
newthing=abc
答案 0 :(得分:1)
你的代码似乎有点过于复杂
我减少它以便它起作用,但也许我误解了你的问题
但这样它就可以处理myfile.ini
中的示例字符串。
@echo off
set init=50M
set max=75M
setlocal enableextensions enabledelayedexpansion
for /f "tokens=* delims=" %%a in (myfile.ini) do (
set str1=%%a
call :morph
echo !str1!>>myfile_new.ini
echo !str1!
)
endlocal
goto :eof
:morph
if "!str1:~0,6!"=="thing=" (
set "str1=thing=!init!"
)
if "!str1:~0,6!"=="thong=" (
set "str1=thong=!max!"
)
goto :eof