蝙蝠文件中的逃逸百分比

时间:2012-11-25 14:16:22

标签: batch-file

我正在尝试使用批处理文件编写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

在上面的脚本中,我尝试使用%(即%here引用)来逃避%%,但是bat脚本提供 g: {#Swc9此时出人意料。

为了进一步发生根本原因,我尝试在另一个批处理文件中加倍%%(转义%),并且它有效:

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

为什么集成到不同连接的相同脚本不起作用?

1 个答案:

答案 0 :(得分:66)

两个 %% 等于一个。这是正确的(但只在脚本中,而不是直接在cmd中),不需要使用转义运算符 ^

但是您错过了agrupation运算符。那就是问题所在;当您在命令中找到时,IF会关闭。

使用此:

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