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

Batch script to modify .properties file

本问题已经有最佳答案,请猛点这里访问。

我有一个属性文件(server.properties),它如下所示:

IP地址=10.x.x.xservername=名称

还有很多其他的价值观。

假设它位于c:serverserver.properties是否可以使用批处理脚本修改值。

如果我想将servername从"somename"更改为"myname",我该怎么办?我不能用行号,因为它可以随时更改。

这不是使用Windows命令行环境在文件中如何查找和替换文本的副本?

我正试图找出如何替换属性的值。不能用一个词替换另一个词。

谢谢。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@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

所需的移动命令仅用于测试目的。确认命令正确后,将ECHO(MOVE更改为MOVE以实际移动文件。追加>nul抑制报表消息(如1 file moved)

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

请注意,创建新版本时,此版本将删除文件中的所有空行。如果需要,可以克服这一点。

要运行此例程,请使用

此批处理名称"替换文本"

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

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

要替换该文件,请按照说明激活MOVE,方法是在验证该过程是否正常运行后,将ECHO(MOVE替换为MOVE。正如您所看到的,一个小错误和损坏可能已经完成-节省了两步操作。