Windows 从CMD运行时,schtasks命令有效,但从VBScript运行时无效

Windows 从CMD运行时,schtasks命令有效,但从VBScript运行时无效,windows,vbscript,cmd,Windows,Vbscript,Cmd,我在VBScript中有以下代码: Set oShell=CreateObject(“WScript.Shell”) 暗条纹 strArgs=“SchTasks/Create/SC MONTHLY/D 8/TN”“RespaldoBD”“/TR”'C:\Python27\pythonw.exe%USERPROFILE%\Desktop\respaldsbd.py'/ST 16:33” 奥谢尔,快跑,0,错 这将在Windows中的任务计划程序中创建任务 运行VBScript时,不会创建任务,但

我在VBScript中有以下代码:

Set oShell=CreateObject(“WScript.Shell”)
暗条纹
strArgs=“SchTasks/Create/SC MONTHLY/D 8/TN”“RespaldoBD”“/TR”'C:\Python27\pythonw.exe%USERPROFILE%\Desktop\respaldsbd.py'/ST 16:33”
奥谢尔,快跑,0,错
这将在Windows中的任务计划程序中创建任务

运行VBScript时,不会创建任务,但在CMD中运行命令时,任务会起作用:

SchTasks /Create /SC MONTHLY /D 8 /TN ""RespaldoBD"" /TR "'C:\Python27\pythonw.exe  %USERPROFILE%\Desktop\RespaldosBD.py'" /ST 16:33

我不明白发生了什么。

VBScript字符串以双引号开头和结尾。字符串中的任何嵌套双引号必须通过将其加倍来转义

您可以这样定义
strArgs

strArgs = "SchTasks /Create ... /TR "'C:\Python27\pythonw.exe  %USERPROFILE%\Desktop\RespaldosBD.py'" /ST 16:33"
'         ^                         ^^
'         |                         |`- comment begins here
' string begins here         string ends here
基本上是运行命令

SchTasks /Create /SC MONTHLY /D 8 /TN "RespaldoBD" /TR 
当然,这是失败的

通常会出现语法错误,但嵌套命令周围使用的单引号会将行的其余部分转换为注释,因此该语句在语法上是正确的,但在语义上是错误的

此外,单引号不应该放在第一位。它们将整个Python命令行定义为程序,而该程序应该只是Python可执行文件。脚本的路径应该是一个参数

更改此项:

strArgs = "SchTasks /Create /SC MONTHLY /D 8 /TN ""RespaldoBD"" /TR "'C:\Python27\pythonw.exe  %USERPROFILE%\Desktop\RespaldosBD.py'" /ST 16:33"
为此:

strArgs = "SchTasks /Create /SC MONTHLY /D 8 /TN ""RespaldoBD"" /TR ""C:\Python27\pythonw.exe %USERPROFILE%\Desktop\RespaldosBD.py"" /ST 16:33"

VBScript和计划任务都可以运行。

您只能在具有管理员权限的情况下运行SchTasks.exe,如从提升的命令提示符运行。您必须通过UAC同意对话框。因此,您的.vbs脚本不起作用的最基本原因是它没有运行。@HansPassant不,这不是问题所在<代码>schtasks在用户级任务的用户帐户中工作正常。