如何修复VBS调用PowerShell启动批处理时的Expected ')'错误?
修复VBS调用PowerShell启动管理员权限批处理的引号错误
错误原因
脚本报错是因为引号嵌套转义不正确,VBS与PowerShell的引号规则叠加后,导致PowerShell收到的命令语法不完整,触发Expected ')'错误。
修复后的脚本
以下是两种可行的修复方案:
方案1:用单引号处理批处理路径(更简洁)
Set objShell = CreateObject("Wscript.Shell") objShell.Run "powershell -Command ""Start-Process cmd -Verb RunAs -ArgumentList '/c ''C:\Temp\CAL.bat'''""", 0, False
方案2:正确转义双引号
Set objShell = CreateObject("Wscript.Shell") objShell.Run "powershell -Command ""Start-Process cmd -Verb RunAs -ArgumentList '/c """"C:\Temp\CAL.bat""""'""", 0, False
关键说明
- VBS中,字符串内的双引号需要用
""转义(两个双引号代表一个实际双引号)。 - PowerShell中,用单引号包裹批处理路径可避免双引号嵌套冲突;若必须用双引号,需在VBS层面再次转义(写四个双引号
"""",最终传递给PowerShell的是一个双引号)。 - 脚本末尾的
, 0, False是可选参数:0表示运行时隐藏窗口,False表示不等待命令执行完成就继续(需等待可改为True)。
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

