用于编辑ini文件中的行的批处理文件

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个字符的字符串,并用该字符串替换该行.

Rya*_*ose 6

您要求的"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)

请注意,在这两种情况下,如果文件包含|,<或>等特殊符号,则可能需要做更多工作