Windows任务计划程序无法启动批处理文件任务

时间:2013-10-11 12:45:11

标签: batch-file scheduled-tasks

我有一个包含以下代码的批处理文件,用于停止和启动SQL Report服务:

net stop "SQL Server Reporting Services (MSSQLSERVER)" 

timeout /t 10

net start "SQL Server Reporting Services (MSSQLSERVER)"

我已将计划任务设置为每天运行,它当前以SYSTEM身份运行,并设置了最高权限。我在动作上设置了文件夹选项的开始,一切似乎都正确设置。但是当我运行任务时似乎没有任何事情发生,它表示任务已经运行但我看不到该服务已按原样重新启动。

有人可以指导我找到我所缺少的东西吗?感谢

17 个答案:

答案 0 :(得分:65)

确保正确设置'开始''程序/脚本'选项。如果您的文件地址是:C:\ Temp \ foo.bat,请将'start in'选项设置为'C:\ Temp',将'program / script'选项设置为'foo.bat'。

设置“开始”选项:右键单击任务计划程序> Properties > Actions > Edit.

中的任务

如果单独这样做不起作用,那么尝试将.bat文件移动到具有基本权限的目录(例如,可能是共享目录)。

我遇到一个问题,我的.bat文件位于一个对其具有一定限制权限的文件夹中,因此只有我的用户帐户才能访问它。即使我已将任务调度程序设置为使用我的凭据,它仍然失败。将.bat文件移动到另一个目录排序问题。

答案 1 :(得分:11)

在这个愚蠢的问题上浪费了很多时间!

在批处理文件的第一行添加cd命令到批处理文件所在的位置,看看它是否解决了问题。

cd D:\wherever\yourBatch\fileIs

提示:请使用绝对路径,相对路径理想情况下应该不是问题,但调度程序很难理解它们。

答案 2 :(得分:5)

我遇到了同样的问题。我相信这是一个特权问题。如果您有"仅在用户登录时运行"选中,然后就不会发生。

你现在已经想出来了,但是我想在这里为下一个浪费时间的人注册。

答案 3 :(得分:4)

这是一个非常古老的线程,但问题仍然是相同的 -

我尝试过多件事,但都没有奏效 -

  1. 添加了一个开始路径(没有引号)
  2. 删除了程序/脚本中批处理文件的完整路径 领域等
  3. 向本程序添加了C:\Windows\system32\cmd.exe,并将/c myscript.bat添加到参数字段。
  4. 这对我有用 -

    程序/脚本字段 - cmd

    添加参数 - / c myscript.bat

    开始于:myscript.bat的路径

答案 4 :(得分:3)

我在Windows Server操作系统上运行它。 我工作了几个小时,才发现问题是我选中了“以最高权限运行”复选框。选中后,它将删除所有驱动器映射。我的.bat文件在网络上。

enter image description here

答案 5 :(得分:2)

设置'程序/脚本' - >的 file.bat 设置'开始'其余路径(file.bat)

答案 6 :(得分:2)

出现同样的问题,请确保选中“仅在用户登录时运行”,至少这是使我的bat文件再次活动的原因。

答案 7 :(得分:2)

我遇到了同样的问题,没有一个解决方案有效。当我查看历史记录时,我发现了问题。我有这个警告

Task Scheduler did not launch task "\TASK_NAME"  because instance "{34a206d4-7fce-3895-bfcd-2456f6ed6533}"  of the same task is already running.

在设置选项卡中有一个下拉选项"如果任务已在运行,则适用以下规则:"默认为"不要启动新实例"。将其更改为"并行运行新实例"或"停止现有实例"基于你真正需要做的事情。

我知道它是一个老线程,多种解决方案在这里很好,这对我有用。希望能帮助到你。

答案 8 :(得分:1)

尝试以下代码:

Batchfile.bat:

cd c:\batchfilepath
net stop "SQL Server Reporting Services (MSSQLSERVER)" 
timeout /t 10
net start "SQL Server Reporting Services (MSSQLSERVER)"

答案 9 :(得分:1)

我的应用程序无法通过"任务计划程序"。

启动

"事件查看器"中的错误是:pd.DataFrame.duplicated

"任务计划程序"尝试使用" SYSTEM"运行此应用程序用户。问题是网络驱动器"未映射到" SYSTEM"用户。所以我做的是,我创造了一个" .bat"文件并映射"网络驱动器"在开始申请之前:

System.IO.DirectoryNotFoundException

因此,请先检查您的日志:"事件查看器" - > Windows日志 - >应用

答案 10 :(得分:1)

对我来说,问题是由.bat包含cd到网络驱动器引起的。这失败了,然后后来调用该网络驱动器中的程序什么也没做。

我通过在任务的修改操作窗口的添加参数字段中添加> log.txt来解决此问题。

答案 11 :(得分:1)

一种解决方案是您可以使用'。vbs'文件运行'。bat'文件,然后您可以在 windows scheduler中运行此vbs文件

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("cron_jobs.bat"), 0, True

你可以这样做,我希望它能解决你的问题。

答案 12 :(得分:1)

解决方案是您应取消选中(取消激活)选项“仅在用户登录时运行”。

更改后,它开始在我的机器上运行。

答案 13 :(得分:0)

对我来说这是触发问题。默认情况下,它应该在触发器选项卡中On a Schedule。我选择了At log on然后我正在等待运行任务。正如其名称在登录时所说,意味着您必须注销并登录。

尝试将其放在附表上并每分钟开火。

enter image description here

答案 14 :(得分:0)

我的问题是由OneDrive引起的。 OneDrive正在同步我的批处理文件所在的文件夹,这似乎阻止了Task Scheduler执行它。 (MS上没有人测试这种东西吗?)

无论如何,通过将我的批处理文件移动到OneDrive不在的文件夹中,任务计划程序都可以启动该批处理文件。

答案 15 :(得分:0)

在支持runas的Windows系统上。首先,通过以该用户身份运行的命令行启动程序来独立运行程序,例如

runas /user:<domain\username> cmd

然后,在新命令行中,cd到您希望任务启动器启动程序并键入完整参数的路径。

cd D:\Scripts\,然后执行

C:\python27\pthon.exe script.py

任务计划程序抑制的任何错误都应该出现在命令行输出中,并使调试起来更容易。

答案 16 :(得分:0)

最适合我的配置:

  • 在“常规”选项卡中:标记单选按钮-“仅在用户登录时运行” <=重要!
  • 程序/脚本:只是脚本的路径,不带引号或不带引号:C:/tools/script.bat
  • 添加参数:将其保留为空
  • 开始于:将其保留为空

在设置中,只有2个复选框标记为:

  • 允许任务按需运行
  • 如果正在运行的任务没有在请求时结束,请强制将其停止