用于修改.properties文件的批处理脚本

时间:2014-09-22 05:24:34

标签: batch-file

我有一个属性文件(server.properties),它看起来像这样:

IPADDRESS = 10.x.x.x
SERVERNAME = someName

以及许多其他价值观。

假设它位于C:\ Server \ server.properties
有没有办法使用批处理脚本修改值。

如果我想将serverName从“someName”更改为“myName”,我该怎么办? 我不能使用行号,因为它可以随时更改。

这不是How can you find and replace text in a file using the Windows command-line environment?

的副本

我想弄清楚如何替换属性的值。不要将一个单词替换为另一个单词。

感谢。

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=C:\106x"
(
 FOR /f "usebackqdelims=" %%a IN ("%sourcedir%\q25967146.txt") DO (
  FOR /f "tokens=1*delims==" %%g IN ("%%a") DO (
   IF /i "%%g"=="servername" (ECHO(%%g=%~1
    ) ELSE (ECHO(%%a)
  )
 )
)>newfile.txt
:: newfile.txt now contains a modified version.
:: This line will overwrite the original

ECHO(MOVE /y newfile.txt "%sourcedir%\q25967146.txt"

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

我使用了一个名为q25967146.txt的文件,其中包含我的测试数据。更改名称以适合自己。

制作newfile.txt

为了测试目的,所需的MOVE命令仅为ECHO在您确认命令正确后,将ECHO(MOVE更改为MOVE以实际移动文件。附加>nul以取消报告消息(例如1 file moved

上面显示的方法故意创建一个新文件,以便在不损坏原始版本的情况下查看新版本。

请注意,此版本将在创建新版本时从文件中删除所有空行。如果需要,可以克服这个问题。

要运行此例程,请使用

thisbatchname “替换文字”

如果替换文本是没有空格或其他分隔符的单个字符串(似乎很可能),则可以省略引号。


代码已修复 - delims=="行中有一个for /f...%%a...,这应该是delims=(一个=。)双=是正确的for /f ... %%g...行。

要更换文件,请在验证程序运行正常后,按照move替换ECHO(MOVE的指示激活MOVE。正如您所见,可能已经完成了一个小错误和损坏 - 通过两步操作保存。