Windows 任务计划程序不 运行 VBScript

Windows Task Scheduler Doesn't Run VBScript

我正在尝试使用 Windows 任务计划程序自动执行 VBScript。但是,我尝试使用 cscript.exe + "C:\...\script.vbs" 但它没有 运行。我还尝试在 CMD (cscript.exe "C:\...\script.vbs") 中直接 运行 相同的命令并且它有效。

可能是什么问题?

编辑:

我只是尝试将设置从 "Run whether user is logged on or not" 切换到 "Run only when user is logged on",并且成功了。我想知道是否有办法让我的任务安排 运行 即使用户已注销。

像这样写一个批处理文件:

echo "Started!" > c:\foldergoeshere\log.txt
cscript.exe "C:\...\script.vbs" > c:\foldergoeshere\log.txt
echo "Stopped!" > c:\foldergoeshere\log.txt

然后安排批处理文件而不是 vbs。这将使您能够看到正在发生的事情阻止它 运行。您在控制台 (CMD) 中看到的任何错误都将输出到 "Started!" 和 "Stopped!"

之间的日志文件

.vbs 文件是 运行 不可见的,这是 运行 使用 'logged on or not' 选项的结果。

您将不会被允许干扰使用计算机的用户,这意味着您将能够帮助自己,但不能帮助他人。

请阅读“任务计划程序帮助”菜单中的以下文本:

任务安全上下文

You can specify that a task should run even if the account under which the task is scheduled to run is not logged on when the task is triggered.

To do this, select the radio button labeled Run whether user is logged on or not.

If this radio button is selected, tasks will not run interactively.

To make a task run interactively, select the Run only when user is logged on radio button.

经过数小时的研究,出现了 Blake Morrison(来自 Microsoft)的博客之一;它提到

If running a .vbs / .ps1 script, try launching it from a .cmd / .bat script

Help! My Scheduled Task does not run…

该博客还解释了很多 rules/tips 使用任务计划程序时的内容。

因此,请创建一个调用 VBScript 的 .cmd/.bat 文件。例如:cscript.exe YourScript.vbs 将在您的 .cmd/.bat 脚本中。

有什么麻烦的?我不使用 .cmd/.bat 并且脚本有效! (Windows7 这里)
我的 VBS 脚本(作为计划任务)在这 4 种情况下运行良好:

  1. c脚本和选项"Run only when user is logged on"
  2. c脚本和选项"Run whether user is logged on or not"
  3. w脚本和选项"Run only when user is logged on"
  4. w脚本和选项"Run whether user is logged on or not"

只是在第一种情况下,我遇到了黑色命令 window 在我的屏幕上闪烁。

操作设置:



我的脚本,它只是创建一个文件:

Set objFSO = CreateObject("Scripting.FileSystemObject")
filename = "C:\Temp\" & Hour(Time) & Minute(Time) & Second(Time)
Set objFile = objFSO.CreateTextFile(filename)

曾不止一次经历过 VBScript 运行 按照计划任务可以正常工作数月和数年,但突然无法再工作,尽管没有任何更改。已尝试使用此处和其他地方提供的所有方法来响应任务,但没有成功。我的解决方法是创建一个 new 计划任务,其中的所有设置都是从​​原始任务复制而来的。

格雷格回答了这个 https://superuser.com/a/816073

基本上你需要创建2个文件夹:

您必须创建一个文件夹(或在 64 位上创建两个文件夹-windows):

(32 位,始终)C:\Windows\System32\config\systemprofile\Desktop

(64 位) C:\Windows\SysWOW64\config\systemprofile\Desktop

为我解决了问题(我可以指向 .vbs 文件,不需要 bat)。

你可以做到这一点。

  1. cmd 作为程序。

  2. /c start cscript //nologo "W:\Pathto with spaces\VBScript.vbs"
    
    • /c 将以下内容发送到 cmd

    • start开始下一个参数

    • cscript //nologo "W:\Path with spaces\VBScript.vbs" 不言自明。路径用引号括起来以允许文件名中有空格。

      截图

我在 Microsoft Windows [版本 6.1.7601] 上试过这个 版权所有 (c) 2009 Microsoft Corporation。版权所有。 AKA Window 7,但在我的例子中,我首先 cd 到目录,然后 运行 .bat 文件来执行 .vbs 文件

  1. Go to start menu
  2. Search for run
  3. Once it opens, Type "shell:startup" and press Enter

您将被定向到“启动”文件夹。在此文件夹中,您可以创建一个要执行 .vbs 文件的 .bat 文件(您将以特殊方式执行此操作)

cd C:\the\path\were.vbs\file\located && wscript.exe start_app.vbs

你所做的是 cd 到目录 cd C:\the\path\were.vbs\file\located

然后运行.vbs文件wscript.exestart_app.vbs