【问题标题】:Batch file to edit line in ini file批处理文件以编辑 ini 文件中的行
【发布时间】:2011-09-28 13:32:57
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 我知道的唯一方法是读入整个文件,然后逐行写回,在过程中更改所需的行。

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


【解决方案1】:

您要求的“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 :)
猜你喜欢
  • 2015-01-26
  • 2013-09-23
  • 2016-01-18
  • 2013-08-26
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多