windows - bat 文件中的转义百分比

标签 windows batch-file cmd escaping

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

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

最佳答案

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

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

使用这个:

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

关于windows - bat 文件中的转义百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551829/

相关文章:

windows - 使Windows批处理文件在程序退出时不关闭

windows - 重命名文件名中包含空格和点的文件

Python 可安装包

wxpython - 使用 Pyinstaller 编译应用程序,但在运行生成的 exe 时不启动 cmd

Python - MySQL SSL 连接

c++ - Windows的“无线网络连接状态”窗口可以通过编程方式打开吗?

Windows 调度程序不执行批处理脚本,但脚本在命令行中运行良好

python - 获取 gtk.StatusIcon 在 Windows 上的位置

windows - 如果超过 10 个,将删除最新文件夹的批处理文件

java - 制作批处理文件来安装程序