wshShell.Exec错误80070002“;系统找不到指定的文件";

wshShell.Exec错误80070002“;系统找不到指定的文件";,shell,vbscript,exec,wsh,Shell,Vbscript,Exec,Wsh,我正在尝试使用wshShell.Exec或wshShell.Run通过另一个脚本运行脚本。我试过两种方法,两种方法都会给我相同的错误。我在谷歌上搜索了这个问题,找不到任何似乎能解决这个问题的东西。唯一一个真正相关的建议是尝试使用wshShell.Run而不是Exec 以下是我剧本的相关部分: strScriptPath=“T:\IT资源\Scripts\Shutdown脚本” strForceShutdown=“ForceShutdown.vbs” 对于j=0到99 Set objActive=

我正在尝试使用wshShell.Exec或wshShell.Run通过另一个脚本运行脚本。我试过两种方法,两种方法都会给我相同的错误。我在谷歌上搜索了这个问题,找不到任何似乎能解决这个问题的东西。唯一一个真正相关的建议是尝试使用wshShell.Run而不是Exec

以下是我剧本的相关部分:

strScriptPath=“T:\IT资源\Scripts\Shutdown脚本”
strForceShutdown=“ForceShutdown.vbs”
对于j=0到99
Set objActive=wshShell.Run(strForceShutdown)
'以防我需要从另一个文件夹运行它。
'Set objActive=wshShell.Exec(“cd”&strScriptPath&'))
'Set objActive=wshShell.Exec(“wscript”&strForceShutdown&')
constConf=MsgBox(“自动关机初始化。是否继续?”&chr(10)和“Y=关机N=推迟30分钟”,4,“自动关机通知”)
如果constConf=7,则
终止
Wscript.Sleep(1800000)
其他的
终止
退出
如果结束
下一个
谢谢你的帮助

Shell.Run
,因此不能对其返回值调用方法(
Terminate
)。您也不能设置它,因为它不是对象

您可以通过运行关闭脚本来调用它。但是,请为其指定完整路径,而不是相对路径。从任务调度器启动的脚本通常与手动启动的脚本具有不同的“启动文件夹”,因此不要依赖于脚本来查找另一个文件夹。 此外,您还必须在路径前后添加
Chr(34)
,以说明任何空格

strForceShutdown = "c:\path\to\ForceShutdown.vbs"
wshShell.Run Chr(34) & strForceShutdown & Chr(34)

最后,为什么启动脚本,然后询问是否关闭?为什么不在用户响应后启动脚本,然后就不用担心终止正在运行的进程。

是的。看起来我刚刚读错了什么,以为它返回了一个对象。无论如何,我是这样运行的,这样在30分钟后如果没有选择任何选项,我就可以让计算机关机。否则,如果没有人在计算机旁,它将卡在MsgBox线路上。无论如何,谢谢你的帮助!实际上,我需要这个过程是可终止的。看起来唯一的方法是使用Exec方法。我通过在命令中添加“CMD”使其正常工作。Terminate方法仅适用于Exec设置的对象。看来Exec确实返回了一个对象?因为当我这样对待它时,它是有效的。在寻找了一些关于终止的信息后,我在别处看到了它的建议。无论如何,我的脚本现在至少可以与Exec一起工作。您可以有一个消息框,它会消失并执行默认操作。请参阅
Shell
类的方法。如果返回-1,则表示计时器已过。因此,如果用户单击“是”关闭,或者如果弹出窗口在30分钟后超时,请使用
Shell.Run
启动关闭脚本
如果intResult=vbYes或intResult=-1,那么wshShell.Run…
这肯定会有助于简化我的脚本。谢谢你的信息!