我正在寻找一些在 Windows Scheduler 中安排顺序任务的指导。此实例中的任务是启动数据 ETL 和增量加载作业的工作流。我们只想启动先前任务已完成的后续任务。任何帮助都将不胜感激。
谢谢!!
答案1
如果您熟悉 Linux 世界,则可以通过 连接多个命令来完成此操作&&
,该命令会等待第一个作业成功完成后再启动第二个作业(如果第一个作业失败则中止)。Windows 最终将其添加到cmd.exe
。所以...
您可以将任务捆绑到一行.bat
文件中,各个任务用 分隔&&
。我每周使用以下命令重启一次虚拟机,在执行 之前暂停虚拟机shutdown /r
。效果很好。
C:\Users\JohnB>type reboot.bat
"c:\program files (x86)\vmware\vmware player\vmrun" -T player suspend g:\VMWare\kali-linux-2022.4-vmware-amd64.vmwarevm\kali-linux-2022.4-vmware-amd64.vmx && shutdown /r /t 0
答案2
您可以在 Windows 任务计划程序中创建多步骤任务,但所有步骤都会在任务触发时运行。(Start /Wait ...
如果您只需要这样做,您可以使用它让每个步骤等待完成,然后再交接给下一步。但如果您需要在某个步骤失败时中止整个集合,则需要比任务计划程序更精细的操作。)
另一个选择是让 Windows 任务计划程序启动单个批处理文件或 Powershell 脚本,然后处理其余任务。然后,批处理文件或 Powershell 脚本可以启动您的第一个任务,等待结果,然后决定下一步做什么。
答案3
显然,当您将多个操作添加到单个任务时,它们会按顺序执行,而不是同时执行。至少这是我的经验。当我测试将其用作cmd.exe /c ping google.com
第一个操作和cmd.exe /c ping apple.com
第二个操作时,运行该任务只会在第一个操作关闭后才出现第二个 cmd 窗口。
因此,如果有两个或多个具有相同设置的连续任务必须始终一起执行,则可以将它们设置为单个任务中的不同操作。
答案4
文档指出操作是按顺序执行的。但是,文档没有明确说明是否考虑了退出代码,至少对我来说是这样。因此,如果操作 1 失败,仍会执行操作 2,这是我读到的文档中的方式。
“...当指定多个动作时,它们会按顺序执行。”