我有一个属性文件(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?
的副本我想弄清楚如何替换属性的值。不要将一个单词替换为另一个单词。
感谢。
答案 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
。正如您所见,可能已经完成了一个小错误和损坏 - 通过两步操作保存。