Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 要修改.properties文件的批处理脚本_Batch File - Fatal编程技术网

Batch file 要修改.properties文件的批处理脚本

Batch file 要修改.properties文件的批处理脚本,batch-file,Batch File,我有一个属性文件(server.properties),它如下所示: ipaddress=10.x.x.x serverName=someName 还有很多其他的价值观 假设它位于C:\Server\Server.properties 是否有使用批处理脚本修改值的方法 如果我想将serverName从“someName”更改为“myName”,该怎么办? 我不能使用行号,因为行号随时都可能改变 这不是一个复制品 我试图找出如何替换财产的价值。不是用一个词替换另一个词 谢谢。@ECHO OFF S

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

ipaddress=10.x.x.x
serverName=someName

还有很多其他的价值观

假设它位于C:\Server\Server.properties
是否有使用批处理脚本修改值的方法

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

这不是一个复制品

我试图找出如何替换财产的价值。不是用一个词替换另一个词

谢谢。

@ECHO OFF
SETLOCAL
设置“sourcedir=C:\106x”
(
对于/f“usebackqdelims=“%%a IN”(“%sourcedir%\q25967146.txt”)执行以下操作(
对于/f“tokens=1*delims==”%%g IN(“%%a”)DO(
如果/i“%%g”==“servername”(ECHO(%%g=%~1
)其他(回声(%%a)
)
)
)>newfile.txt
::newfile.txt现在包含一个修改过的版本。
::此行将覆盖原始内容
ECHO(MOVE/y newfile.txt“%sourcedir%\q25967146.txt”
后藤:EOF
您需要更改
sourcedir
的设置以适应您的环境

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

生成newfile.txt

所需的移动命令仅用于测试。
ECHO
在验证命令正确后,更改
ECHO(MOVE
MOVE
以实际移动文件。追加
>nul
以抑制报告消息(例如
1个文件已移动

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

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

要运行此例程,请使用

thisbatchname“替换文本”

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


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


要替换文件,请按照替换回声的指示激活移动(使用
MOVE
移动)-一旦您验证了该过程是否正常运行。正如您所看到的,一个小错误和损坏可能已经完成-通过两步操作保存。

此代码删除了文件中的其他变量。servername会得到更新,但如果我在servername之外增加了一个“ip=1.1.1.1”,它将变为“ip”=“我还需要修改原件,而不是复印件。这不是副本