在bat文件中跳出百分比

我正在尝试使用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 

在上面的脚本中,我试图使用%(即%%,从这里引用)转义%,但蝙蝠脚本给g:{#Swc9在这个时候是意外的。

为了进一步深入根源,我尝试了在另一个batch file中使用双%%(escape%),它工作

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

想知道为什么当集成到不同的连接工作相同的脚本不起作用…

任何帮助?

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

但是你错过了agrupation操作符 ,那就是这个问题,IF在你的命令中find的时候closures

用这个:

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

我希望这对你有帮助。

PS:对不起,我的英语