使用 DOS 批处理脚本:在属性文件中查找一行并替换文本
尝试使用批处理文件替换属性文件中某一行的字符串。我知道这可以在不使用临时文件的情况下完成,正如我以前见过的那样,但忘记了如何做到这一点。
我知道,如果我有一个包含以下内容的 var.properties 文件:
CLASSPATH=bsh.jar;other.jar
VARTEST=dummy
ANOTHERVAR=default
我正在尝试更新 .properties 文件中的 CLASSPATH 值,而不更改属性文件的顺序。
这是一个属性文件,所以我相信答案与使用有关:
for /f "tokens=1,2* delims==" %%i in (var.properties) do (
@echo Key=%%i Val=%%j
)
Trying to replace a string in a properties file on a certain line by using a batch file. I know that this can be done WITHOUT the use of a temp file, as I have seen it before, but forgotten how to do it.
I know that if I have a var.properties file that contains this:
CLASSPATH=bsh.jar;other.jar
VARTEST=dummy
ANOTHERVAR=default
I am trying to update the CLASSPATH value in the .properties file without changing the order of the properties file.
This is a properties file and so I believe the answer would be related to using:
for /f "tokens=1,2* delims==" %%i in (var.properties) do (
@echo Key=%%i Val=%%j
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
find
代替findstr
,并在“classpath”上使用/v
和/i
开关。这将省略返回包含类路径的行,然后您可以沿着 w/VARTEST=dummy
回显文件中所需的内容编辑:
基本上说明,
并将其设置为变量 LINE
Instead of
findstr
usefind
with the/v
and/i
switches on "classpath". This will OMIT returning the line with classpath in it, then you can echo what you want in the file along w/VARTEST=dummy
EDIT:
Basically states,
"classpath" in it and set it to variable LINE
我终于崩溃并接受了使用“临时”文件的方法。使用带有“!”的延迟扩展性格解决了我的问题。这一成功很大程度上归功于 mecaflash 的投入。
您可以使用以下命令调用此脚本:CALL Script.bat PropKey NewPropValue Filename
I finally broke down and accepted a method using a "temp" file. Using delayed expansion with the '!' character solved my question. Much of this success was due to input by mecaflash .
You can call this script with: CALL Script.bat PropKey NewPropValue Filename