Windows Task Scheduler doesn't start batch file task
我有一个包含以下代码的批处理文件,以停止和启动SQL Report Service:
1 2 3 4 5 | net stop"SQL Server Reporting Services (MSSQLSERVER)" timeout /t 10 net start"SQL Server Reporting Services (MSSQLSERVER)" |
我已将计划任务设置为每天运行,它当前以具有最高特权集的SYSTEM身份运行。 我已经在操作中设置了"在文件夹中启动"选项,并且通常一切似乎都已正确设置。 但是,当我运行任务时,似乎没有任何反应,它表示任务已运行,但我看不到该服务已按预期重新启动。
有人可以将我引导到我所缺少的地方吗? 谢谢
确保正确设置"开始于"和"程序/脚本"选项。如果您的文件地址是:C: Temp foo.bat,请将"开始于"选项设置为" C: Temp",并将"程序/脚本"选项设置为" foo.bat"。
设置"开始于"选项:在任务计划程序
如果仅此操作不起作用,则尝试将.bat文件移动到具有基本权限的目录(例如,可能是共享目录)。
我的.bat文件位于具有某些限制性权限的文件夹中,因此只有我的用户帐户才能访问它。即使我已设置任务计划程序以使用我的凭据,它仍然失败。将.bat文件移动到另一个目录解决了该问题。
在这个愚蠢的问题上浪费了很多时间!
将cd命令添加到批处理文件位于批处理文件第一行的位置,然后查看它是否可以解决问题。
1 | cd D:\wherever\yourBatch\fileIs |
提示:请使用绝对路径,理想情况下,相对路径不应该成为问题,但是调度程序很难理解它们。
这是一个很旧的线程,但问题仍然相同-
我尝试了多种方法,但均无效果-
领域等
myscript.bat
这就是对我有用的-
程序/脚本字段-cmd
添加参数-/ c myscript.bat
开始于:myscript.bat的路径
我有同样的问题。我相信这是一个特权问题。如果选择了"仅在用户登录时运行",则不会发生。
希望您现在已经弄清楚了,但是我想在这里注册,以供下一个在此上浪费时间的下一个人使用。
我遇到了同样的问题,所有解决方案均无效。当我检查历史记录时,我发现了问题所在。我有这个警告
1 | Task Scheduler did not launch task"\TASK_NAME" because instance"{34a206d4-7fce-3895-bfcd-2456f6ed6533}" of the same task is already running. |
在设置选项卡中,有一个下拉选项"如果任务已经在运行,则适用以下规则:",默认值为"不启动新实例"。根据实际需要将其更改为"并行运行新实例"或"停止现有实例"。
我知道这是一个旧线程,这里有多个解决方案都不错,这正是对我有用的方法。希望能帮助到你。
遇到相同的问题,请确保至少选中"仅在用户登录后才运行",这才使我的bat文件再次生效。
设置'Program / script'-> file.bat
设置"开始于"其余路径(file.bat)
我的应用程序无法通过"任务计划程序"启动。
"事件查看器"中的错误是:
"任务计划程序"尝试使用" SYSTEM"用户运行此应用程序。问题是未为" SYSTEM"用户映射"网络驱动器"。所以我要做的是,在启动应用程序之前,创建了一个" .bat"文件并映射了"网络驱动器":
1 2 3 | net use T: \\172.20.2.215\images cd C:\MyApplication start MyApplication.exe |
因此,请首先检查您的日志:"事件查看器"-> Windows日志->应用程序
对我而言,问题是由
我通过在任务的"编辑"操作窗口的"添加参数"字段中添加
请尝试以下代码:
Batchfile.bat:
1 2 3 4 | cd c:\batchfilepath net stop"SQL Server Reporting Services (MSSQLSERVER)" timeout /t 10 net start"SQL Server Reporting Services (MSSQLSERVER)" |
一种解决方案是,可以将" .bat"文件与" .vbs"文件一起运行,并且可以在Windows Scheduler中运行此vbs文件。
1 2 | Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run("cron_jobs.bat"), 0, True |
您可以这样做,希望它能解决您的问题。
解决方案是您应取消选中(停用)"仅在用户登录后才运行"选项。
更改之后,它就可以在我的机器上运行了。
在支持
然后,在该新命令行中,
任务计划程序抑制的任何错误都应该出现在命令行输出中,并使调试起来更容易。
我的问题是由OneDrive引起的。 OneDrive正在同步我的批处理文件所在的文件夹,这似乎阻止了Task Scheduler执行它。 (MS上没有人测试这种东西吗?)
无论如何,将批处理文件移动到OneDrive不在的文件夹中,可以通过Task Scheduler启动该批处理文件。
对我来说,这是触发问题。默认情况下,它应在"触发器"选项卡中为
尝试将其放在时间表上并每分钟触发一次。