用于在配置文件中设置属性的脚本

时间:2014-10-08 12:25:38

标签: windows batch-file scripting

我需要找到一种自动化配置文件设置的方法。该文件基本上如下所示:

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

理想情况下,我想运行一个.bat文件,其中包含以下参数:

setconfiguration.bat filename -value3 test -value4 success

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

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

有没有简单的方法可以做到这一点,而无需安装任何新工具? 老实说,我对脚本(.bat)的经验不多,到目前为止谷歌并没有太大的帮助。 :(

编辑:我在这个答案中找到了一个名为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%

谢谢,

1 个答案:

答案 0 :(得分: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