【问题标题】:Script to set properties in a configuration file在配置文件中设置属性的脚本
【发布时间】:2014-10-08 12:25:37
【问题描述】:

我需要找到一种方法来自动化配置文件的设置。该文件基本上是这样的:

value1=hello
value2=world
value3=cookies
value4=cream

理想情况下,我想运行一个带有以下参数的 .bat 文件:

setconfiguration.bat 文件名 -value3 测试 -value4 成功

这会将文件数据更改为以下内容:

value1=hello
value2=world
value3=test
value4=success

有什么简单的方法可以做到这一点而无需安装任何新工具? 老实说,我在编写脚本 (.bat) 方面几乎没有经验,到目前为止,Google 也没有太大帮助。 :(

编辑:我在这个答案上找到了一个名为 repl.bat 的脚本; https://stackoverflow.com/a/16735079/4121213 使用它我可以做类似的事情来替换单个值。这应该能够进一步帮助我。

@echo off
setlocal
cd /d %~dp0
Set "OldString=^value3=\S{1,100}"
Set "NewString=value3=test"
set file="test.txt"
for %%F in (%file%) do set outFile="%%~nFCleaned%%~xF"
pause
call repl OldString NewString e <%file% > %outfile%

谢谢,

【问题讨论】:

    标签: windows batch-file scripting


    【解决方案1】:

    将此文本保存为 bat 文件,然后像这样调用:setconfiguration.bat filename value3 test value4 success 您可以放置​​任意数量的值对。

    @echo off
    setlocal
    
    set tmpfile="%temp%\Alterconfiguration.txt"
    :loop
    if x%3 equ x goto done
    if exist %tmpfile% del /f %tmpfile%
    set key=%2
    set value=%3
    rem remove any quotes from strings with spaces
    set key=%key:"=%
    set value=%value:"=%
    for /f "tokens=1,* delims==" %%a in (%1) do (
        if /i "%%a" equ "%key%" (
            echo %key%=%value%>> %tmpfile%
        ) else (
            echo %%a=%%b>> %tmpfile%
        )
    )
    copy %tmpfile% %1 /y
    shift /2
    goto loop
    
    :done
    endlocal
    

    如果您需要处理空格,我怀疑您会这样做,那么您需要将参数包含在引号中。例如setconfiguration.bat filename "value 3" "test a full string" value4 success

    【讨论】:

    • 哇,非常感谢。我没想到会有这样一个完整而完整的答案。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多