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

时间:2011-07-05 06:51:16

标签: batch-file command-line-arguments ini

我有一个自动生成的ini文件。

它的第二行总是: Version = W.XX.Y.ZZ

W是主要版本号,XX是次要版本,Y是构建版本,ZZ是修订版。

我需要打开该ini文件并使用批处理文件编辑该行,以便删除该版本中的构建和修订号。因此,该行应该像这样结束: Version = W.XX

主要号码将始终为一个字符,次要号码将始终为两个,因此整个字符串长度为14个字符(包含空格)。

我希望我能获得该行的LEFT个字符的14个字符串,并用该字符串替换该行。

1 个答案:

答案 0 :(得分: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

如果其他行包含“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

请注意,在这两种情况下,如果您的文件包含特殊符号,例如|,<或>

,则可能需要做更多工作