1

我是批次的新手。我正在尝试使用批处理编辑文件中的一行。但是,该行包含空格和一个保留字符(=符号)基本上,我想更改PasswordComplexity = 1PasswordComplexity = 0,它位于一个名为export.cfg All Ideaspreciated 的文件中,这是我现在所拥有的:

setlocal enabledelayedexpansion

FOR /F "usebackq delims=" %%a IN ("export.cfg") DO (
set "line=%%a" & echo !line:(PasswordComplexity = 1)=(PasswordComplexity = 0)!
)>>"import.cfg"
4

1 回答 1

1

=不幸的是,不能简单地用原生 Windows 解决方案替换等号。见https://stackoverflow.com/a/9561827/891976

如果包含 PasswordComplexity 的行只有一个数字,您可以执行以下操作:

setlocal EnableExtensions EnableDelayedExpansion

for /f "usebackq delims=" %%A in ("export.cfg") do (
    set "line=%%A"
    set "found=false"
    for /f "delims=" %%B in (echo %%A^|find "PasswordComplexity = 1") do set "found=true"
    if !found!==true (
        echo !line:1=0!
    ) else (
        echo !line!
    )
)>>"import.cfg"

endlocal

另请注意,无论何时在引号之外使用特殊字符时,都必须对其进行转义。见http://www.robvanderwoude.com/escapechars.php

于 2013-03-01T14:20:34.727 回答