47

我有一个包含以下代码的批处理文件来停止和启动 SQL 报告服务:

net stop "SQL Server Reporting Services (MSSQLSERVER)" 

timeout /t 10

net start "SQL Server Reporting Services (MSSQLSERVER)"

我已将计划任务设置为每天运行,它当前以具有最高权限集的 SYSTEM 运行。我已经在该操作上设置了“在文件夹中开始”选项,并且所有内容似乎都设置正确。但是当我运行任务时似乎什么也没发生,它说任务已经运行,但我看不到服务已经按预期重新启动。

有人可以指导我了解我所缺少的吗?谢谢

4

18 回答 18

112

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

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

如果仅此一项不起作用,请尝试将 .bat 文件移动到具有基本权限的目录(例如,可能是共享目录)。

我遇到了一个问题,我的 .bat 文件位于具有一些限制性权限的文件夹中,因此只有我的用户帐户才能访问它。即使我已将任务计划程序设置为使用我的凭据,它仍然失败。将 .bat 文件移动到另一个目录可以解决问题。

于 2013-10-31T12:27:18.887 回答
21

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

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

cd D:\wherever\yourBatch\fileIs

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

于 2016-01-18T02:27:05.950 回答
14

这是一个相当古老的线程,但问题仍然是一样的 -

我尝试了多种方法,但都没有奏效-

  1. 添加了路径开始(不带引号)
  2. 删除了程序/脚本字段等中批处理文件的完整路径
  3. 添加C:\Windows\system32\cmd.exe到程序并添加/c myscript.bat到参数字段。

这对我有用 -

程序/脚本字段 - cmd

添加参数 - /c myscript.bat

开始于:myscript.bat 的路径

于 2017-02-24T20:32:51.090 回答
9

我有同样的问题。我相信这是一个特权问题。如果您选择了“仅在用户登录时运行”,则不会发生。

希望您现在已经想通了,但我想在这里为下一个在这方面浪费时间的人注册它。

于 2014-11-03T07:39:15.650 回答
7

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

在此处输入图像描述

于 2020-01-30T19:23:28.463 回答
4

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

于 2014-08-26T11:34:08.570 回答
4

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

于 2016-01-27T18:47:37.270 回答
4

在支持runas. 首先,通过从以该用户身份运行的命令行启动程序来独立运行程序,如下所示

runas /user:<domain\username> cmd

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

cd D:\Scripts\, 然后执行

C:\python27\pthon.exe script.py

任何被任务调度程序抑制的错误都应该出现在命令行输出中,并使事情更容易调试。

于 2018-10-15T13:59:38.200 回答
3

一种解决方案是您可以使用“.vbs”文件运行“.bat”文件,并且可以在windows scheduler中运行此 vbs 文件。

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

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

于 2016-12-07T06:16:03.693 回答
3

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

任务计划程序未启动任务“\TASK_NAME”,因为同一任务的实例“{34a206d4-7fce-3895-bfcd-2456f6ed6533}”已在运行。

在设置选项卡中有一个“如果任务已经在运行,则应用以下规则:”的下拉选项,默认为“不启动新实例”。根据您实际需要完成的操作,将其更改为“并行运行新实例”或“停止现有实例”。

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

于 2018-04-03T09:20:21.183 回答
2

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

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

于 2017-12-14T12:47:21.923 回答
2

我的应用程序无法通过“任务计划程序”启动。

“事件查看器”中的错误是:System.IO.DirectoryNotFoundException

“任务计划程序”尝试使用“SYSTEM”用户运行此应用程序。问题是没有为“SYSTEM”用户映射“网络驱动器”。所以我所做的是,在启动应用程序之前,我创建了一个“.bat”文件并映射了“网络驱动器”:

net use T: \\172.20.2.215\images
cd C:\MyApplication
start MyApplication.exe

所以首先检查你的日志:“事件查看器”-> Windows 日志-> 应用程序

于 2018-04-25T10:48:33.533 回答
1

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

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

于 2016-02-05T12:18:33.933 回答
1

试试下面的代码:

批处理文件.bat:

cd c:\batchfilepath
net stop "SQL Server Reporting Services (MSSQLSERVER)" 
timeout /t 10
net start "SQL Server Reporting Services (MSSQLSERVER)"
于 2017-05-18T23:57:28.340 回答
0

我还有另一个原因,为什么脚本文件(或者其他类型)没有在任务计划程序中运行:文件名中的字符不合适!某些字符在 Windows 文件系统范围内绝对有效,但任务计划程序不喜欢这些字符。我的文件名使用了这样的括号:“Cert(renew).cmd”,它拒绝运行。“Cert_renew.cmd”确实运行了!

于 2021-05-19T14:15:17.073 回答
0

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

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

于 2018-10-10T00:08:30.837 回答
0

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

试着把它放在一个时间表上,每分钟触发一次。

在此处输入图像描述

于 2017-09-03T22:07:17.197 回答
0

对我有用的配置:

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

在设置中,仅标记了 2 个复选框:

  • 允许任务按需运行
  • 如果正在运行的任务在请求时没有结束,则强制它停止
于 2020-11-10T08:49:41.053 回答