蝙蝠文件中的转义百分比



我试图使用批处理文件编写VPN拨号器/隔离开关,但我卡住了。经过一番调查,我发现密码中存在%并不能很好地发挥作用。

这是代码

@echo OFF
SET SWITCHPARSE1=%1
SET SWITCHPARSE2=%2
REM echo %SWITCHPARSE1%
SHIFT
SHIFT
IF "SWITCHPARSE1" == "" goto Usage
IF "SWITCHPARSE1" == "/?" goto Usage
IF "SWITCHPARSE2" == "" goto Usage
IF "SWITCHPARSE2" == "/?" goto Usage

IF "%SWITCHPARSE1%" == "sl" (
    IF "%SWITCHPARSE2%" == "conn" (
        echo "inside sl conn"
        rasdial sl employee1 K%%Pxev3=)g:{#Swc9
        goto end
    ) ELSE IF "%SWITCHPARSE2%" == "disconn" (
        rasdial sl /disconnect
        goto end
    ) ELSE (
        goto Usage
    )
) ELSE IF "%SWITCHPARSE1%" == "off" (
        IF "%SWITCHPARSE2%" == "conn" (
        rasdial Office employee1 office123
        goto end
    ) ELSE IF "%SWITCHPARSE2%" == "disconn" (
        rasdial Office /disconnect
        goto end
    ) ELSE (
        goto Usage
    )
) ELSE (
    goto Usage
)
:Usage
echo "Usage is vpnconn.bat /[sl|off] /[conn|disconn]"
:end

在上面的脚本中,我试图使用 % % (即 %%,参考这里),但蝙蝠脚本给出 g:{#Swc9 此时是出乎意料的。

为了进一步的根本原因,我尝试在不同的批处理文件中双重%%(转义%),并且它起作用了:

@echo OFF
rasdial sl employee1 K%%Pxev3=)g:{#Swc9

为什么相同的脚本在集成以使用不同的连接时不起作用?

两个 %% 等于一个 %。没错(但仅在脚本中,而不是直接在cmd中),无需使用转义运算符^

但是您缺少聚合运算符)。这就是问题所在;当 IF 在您的命令中找到 时关闭。

使用这个:

rasdial sl employee1 K%%%%Pxev3=^)g:{#Swc9

最新更新