Bat文件替换特定的String

时间:2014-01-29 16:14:56

标签: batch-file cmd

我正在寻找更改文件中一行的Bat文件。 让我举个例子来说清楚。 我有一个文件test.properties

该文件如下所示:

hostname=<hostname>
port=0
rpcqueue=0
defaultlocale=en
defaulttimeout.normal=0
defaulttimeout.long=0
defaulttimeout.xlong=0
name=admin
passwd=406abbc8192eda42cc3261235959e23a8e223f6ab7f10d8cdf2e22fca

所以我想替换passwd后面的值,但我的问题是我不知道这个值我只知道我想要替换旧值的值。

还应该可以在命令行中输入文件名,属性值(passwd)和新值,以便我可以将此文件用于其他文件。 对不起,如果这个问题已经存在,但我找不到了。

我对蝙蝠的了解不是很好,我正在学习。

谢谢!

2 个答案:

答案 0 :(得分:0)

在命令行中使用以下脚本如下: script.bat 例如&GT; script.bat test.txt passwd someval 脚本将解析您的文件,查找“varName =”,如果找到它,它将使用newVarValue替换值。 所有输出都被重定向到临时文件,然后临时文件替换初始文件。

@echo off
set "filepath=%~1"
set "pname=%~2"
set "value=%~3"

(
    for /F "tokens=*" %%a in ('type "%filepath%"') do (
        echo "%%a" | findstr /C:"%pname%=" > nul 2>nul
        if "!errorlevel!"=="0" (
            echo %pname%=%value%
        ) else (
            echo %%a
        )
    )
)>"%filepath%.tmp"

move /Y "%filepath%.tmp" "%filepath%"

答案 1 :(得分:0)

像这样启动此批处理文件:Mybatch newpassword

这使用名为repl.bat的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

下载

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

@echo off
type "test.properties" |repl "(passwd=).*" "$1%1" >"newfile.properties"