批处理脚本修改的.properties文件
我有一个属性文件(server.properties),它看起来像这样:批处理脚本修改的.properties文件
ip地址= 10.xxx
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?
我试图找出如何更换属性的值重复。不要用另一个词代替一个词。
谢谢。
@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“替换文本”
如果更换文字无需空格或其他分隔一个字符串(似乎可能)。
代码固定 - 有在for /f...%%a...
线是一个delims=="
,这应该是delims=
(一个=
。)双=
处于for /f ... %%g...
线正确。
要替换文件,请按照ECHO(MOVE
替换为MOVE
的指示激活move
- 一旦您验证过程正常运行。正如你所看到的,一个小小的错误和损害本来可以完成 - 通过两步操作保存。
该代码删除文件中的其他变量。服务器名称得到更新,但如果我有一个“IP = 1.1.1.1”附加到服务器名称,它会变成“IP =” – ecthelion84 2014-09-22 22:56:04
另外我需要修改原件而不是复制副本。 – ecthelion84 2014-09-22 22:58:47
这不是http://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-a-file-using-the-windows-command-line的副本-envir – ecthelion84 2014-09-29 17:41:32