Est*_*ter 4 ini batch-file command-line-arguments
我有一个自动生成的ini文件.
它的第二行总是:
Version = W.XX.Y.ZZ
W主要版本号在哪里,XX是次要版本,Y是Build并且ZZ是Revision.
我需要打开该ini文件并使用批处理文件编辑该行,以便删除该版本中的构建和修订号.因此,该行应该像这样结束:
Version = W.XX
主要数字将始终为一个字符,次要数字将始终为两个,因此整个字符串长度为14个字符(包含空格).
我希望我能得到该LEFT行的14个字符的字符串,并用该字符串替换该行.
您要求的"LEFT"语法是使用变量子串扩展: %var:~,14%
以下代码将在包含字符串"Version"的每一行上执行"LEFT 14"
setlocal enabledelayedexpansion
del output.ini
for /f "tokens=*" %%a in (input.ini) do (
set var=%%a
if not {!var!}=={!var:Version=!} set var=!var:~,14!
echo.!var! >> output.ini
)
endlocal
Run Code Online (Sandbox Code Playgroud)
如果还有其他行包含单词"Version",您还可以修改循环以使用计数器.
setlocal enabledelayedexpansion
del output.ini
set counter=0
for /f "tokens=*" %%a in (input.ini) do (
set var=%%a
set /a counter=!counter!+1
if !counter! EQU 2 set var=!var:~,14!
echo.!var! >> output.ini
)
endlocal
Run Code Online (Sandbox Code Playgroud)
请注意,在这两种情况下,如果文件包含|,<或>等特殊符号,则可能需要做更多工作