【问题标题】:Windows Task Scheduler doesn't start batch file taskWindows 任务计划程序不启动批处理文件任务
【发布时间】:2013-10-19 13:18:47
【问题描述】:

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

net stop "SQL Server Reporting Services (MSSQLSERVER)" 

timeout /t 10

net start "SQL Server Reporting Services (MSSQLSERVER)"

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

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

【问题讨论】:

  • 如果您使用用户凭据而不是系统,它是否有效?这将是一个很好的测试,看看它是否作为计划任务运行。也许移除net start 行并验证服务是否已实际停止 - 看看权限是否存在问题。
  • 我已经对其进行了编辑,因此它只有停止线,并且我尝试使用我的凭据以及其他用户的凭据,但它没有停止服务。我可以自己运行批处理文件,而不是与任务一起运行,它工作正常
  • 也许它没有正确启动或者仍然存在权限问题 - 或者批处理文件中还有我们尚未看到的更多内容。
  • 该批次仅包含我在上面复制的位。我刚刚在别处读到,如果批处理包含引号,那么它将不会从任务中运行。是这样吗?如果是这样,我该如何解决?
  • 您误解了引用注释,或者完全错误。在命令行上,您需要双引号包含空格和其他有毒字符的任何术语,但它们可以正常工作。在任务计划程序中,您可能需要像这样启动批处理文件:cmd /c "c:\myfolder\mybatch.bat"

标签: batch-file scheduled-tasks


【解决方案1】:

确保您正确设置了 'Start in''Program/script' 选项。如果您的文件地址是:C:\Temp\foo.bat,请将“start in”选项设置为“C:\Temp”,将“Program/script”选项设置为“foo.bat”。

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

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

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

【讨论】:

  • 这行得通。只需将'''start in'''参数设置为bat文件所在的目录。
  • 是的,即使它说 start in 是可选的,只需添加它以匹配我的批处理文件的路径即可。也许它正在从批处理文件名中剥离路径?
【解决方案2】:

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

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

cd D:\wherever\yourBatch\fileIs

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

【讨论】:

  • 在我的情况下,相对路径正在扼杀它。感谢您的提示。
  • 没问题,Windows 应该已经解决了这个问题(希望如此)!
  • 这对我来说是修复(似乎)。通过将CD添加到包含脚本运行的EXE的文件夹中,它似乎已经得到了它。回答赞成。我想知道添加“Start In”是否也可以,但我不会去试探命运!
  • 派对有点晚了,但没有其他选择: pushd "%~dp0" 这样您就不必担心路径正确和/或在移动时更改路径剧本。当然你还需要结束你的脚本:popd
【解决方案3】:

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

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

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

这对我有用 -

程序/脚本字段 - cmd

添加参数 - /c myscript.bat

开始于:myscript.bat 的路径

【讨论】:

  • 您好 Simitraa,欢迎来到该网站。我尝试编辑您的答案以使其更漂亮、更简洁,请随时再次编辑。
  • 这对我不起作用。一个dos窗口在屏幕上短暂闪烁,但就是这样,它没有运行。
  • 我试过很多这对我有用。 Start In : myscript.bat 的路径没有双引号 "" ie(D:\Projects\IOT\scripts)
【解决方案4】:

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

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

          runas /user:<domain\username> cmd

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

          cd D:\Scripts\,然后执行

          C:\python27\pthon.exe script.py

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

          【讨论】:

            【解决方案9】:

            一种解决方案是您可以使用 '.vbs' 文件运行您的 '.bat' 文件,然后您可以在 windows 调度程序 中运行此 vbs 文件强>。

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

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

            【讨论】:

              【解决方案10】:

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

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

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

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

              【讨论】:

              • 非常感谢!这解决了我的问题!我的笔记本电脑从睡眠中醒来后,我有一些任务在闲逛,但什么也没做,它们阻止了新任务的启动。我在这上面打我的头,从来没有注意到这个设置。
              • knowledge.broadcom.com/external/article/37223/… 在这里您可以从事件查看器查看日志
              【解决方案11】:

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

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

              【讨论】:

              • 我必须填充任务的“开始”选项才能创建 > log.txt 文件。即使那样,它也完全是空的。
              【解决方案12】:

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

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

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

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

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

              【讨论】:

              • 这对我有用,因为我已经映射了网络驱动器 - 在我看来非常愚蠢
              【解决方案13】:

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

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

              【讨论】:

                【解决方案14】:

                试试下面的代码:

                批处理文件.bat:

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

                【讨论】:

                  【解决方案15】:

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

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

                  【讨论】:

                    【解决方案16】:

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

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

                    【讨论】:

                      【解决方案17】:

                      对我有用的配置:

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

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

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

                      【讨论】:

                        【解决方案18】:

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

                        【讨论】:

                          猜你喜欢
                          • 2020-10-14
                          • 2014-03-15
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-11-05
                          • 2010-11-04
                          • 2014-09-14
                          • 2014-02-28
                          相关资源
                          最近更新 更多