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

4

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

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

其中,W是主版本号,XX是次版本号,Y是Build,ZZ是Revision。

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

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

我希望能够获取该行左侧14个字符的字符串,并用该字符串替换该行。


我所知道的唯一方法是读入整个文件,逐行写回并在此过程中更改所需的行。 - Maynza
1个回答

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

如果有其他带有“版本”一词的行,您也可以修改循环以使用计数器。
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

注意,在这两种情况下,如果您的文件包含像|、<或>这样的特殊符号,则可能需要进行更多的工作。

set /a RyanBemroseVotes+=1 - Andriy M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接