【问题标题】:Batch file running under Task Scheduler continues running after batch file completes在任务计划程序下运行的批处理文件在批处理文件完成后继续运行
【发布时间】:2012-07-26 20:58:04
【问题描述】:

这是对我之前的问题 (link) 的跟进。

为了进行测试,我制作了这个简单的批处理文件,以确保任务计划程序正确执行批处理文件:

cd "C:\Users\user\Desktop"
echo. 2>test.txt

所以在桌面上创建test.txt 文档后,批处理文件应该结束但它会继续运行:

有没有办法,无论是在批处理文件的末尾还是在任务的属性中设置,以确保 cmd 进程退出?

谢谢!

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    我遇到了完全相同的问题。然而,当我读到 Trevor778 在这篇文章中写的内容时,我感到被欺骗了:

    我遇到了同样的问题 - 任务有效,但状态一直显示正在运行。一个简单的尝试是单击左栏中的任务计划程序库。单击操作/刷新。快速。状态更改为就绪。对我来说就是这样,任务运行良好,只是状态没有更新。希望这会有所帮助。

    参考:https://social.technet.microsoft.com/Forums/en-US/2f6dc29c-3b8b-45f5-a2a7-53e076acc062/task-scheduler-scheduler-status-is-being-running-always?forum=winservergen

    【讨论】:

    • 感谢提示!,任务完成后状态似乎没有更新,没有按刷新。
    • 如果您必须手动刷新它并没有帮助,因为它仍然会阻止任务再次运行。
    • @Vincent 它将再次运行。它只是显示“正在运行”状态(状态未更新任务调度程序窗口)。您可以打开另一个来验证这一点。另请参阅:superuser.com/questions/785511/…
    • 按 F5 - 刷新状态
    【解决方案2】:

    您可以在脚本的最后一行添加“退出”

    cd "C:\Users\user\Desktop"
    echo. 2>test.txt
    exit
    

    【讨论】:

      【解决方案3】:

      运行TASKKILL /F /IM cmd.exe 将杀死所有 cmd.exe 进程,无论它是否是生成此批处理文件的进程。这可能不是可取的行为。 :-)

      从您的最后一个问题来看,我猜您仍在使用cmd.exe /k 运行您的任务,这将使该窗口无限期打开。对于无人值守的任务,cmd.exe /c 是更好的选择。当批处理文件完成时,该过程应该结束。

      【讨论】:

      • 感谢您的输入,我将在以后的批处理文件中包含此内容(如有必要)。我最终编写了一个备份程序来处理所有事情,而不是现有备份批处理文件的包装器。
      • 我之前没有注意到/c/k 之间的区别,或者/k 实际上意味着控制台保持打开状态。这是这两个参数之间的唯一区别。 /c 表示控制台在作业完成后终止。谢谢!
      【解决方案4】:

      在 Windows 7 上也是如此。 将所有批处理文件放在运行任务的用户用户特定路径中的目录中

      run programm = " cmd.exe " (没有路径)

      你的演员,我的 where = " /c "C:\Users[username]\whatever\your_batchfile.bat" >> log.txt" "

      " >> log.txt " 这样我就可以看到批处理的输出...

      开始于 = " C:\Users[username]\whatever "

      我还选中了“以最高权限运行”框

      之后一切正常:)

      【讨论】:

        【解决方案5】:

        使用以下

        exit /B
        

        您可以在 Windows 控制台区域找到更多信息,然后输入:exit/?

        【讨论】:

          【解决方案6】:

          我找到的解决方案是在批处理文件的最后添加这一行:

          TASKKILL /F /IM cmd.exe
          

          现在批处理文件任务运行并完成后,它不再在所有正在运行的任务列表中,状态恢复为“就绪”而不是停留在“正在运行”。

          警告:

          该命令将杀死所有正在运行的命令处理器实例,因此它可能是有害的!

          【讨论】:

          • 该命令将杀死所有正在运行的命令处理器实例,因此它可能是有害的!
          猜你喜欢
          • 2014-03-15
          • 2013-03-01
          • 2019-04-06
          • 2014-09-14
          • 1970-01-01
          • 2014-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多