【问题标题】:Windows batch start command and ECHO on completion and close the cmd's windowWindows 批处理启动命令和 ECHO 完成并关闭 cmd 窗口
【发布时间】:2023-03-09 14:28:01
【问题描述】:

我正在尝试安排一个脚本在 Windows 上运行。触发部分工作正常。我的脚本的重要部分如下所示:

start C:\staging-script -arg1 arg -arg2 arg & ECHO "Did staging"
start C:\prod-script -arg1 arg -arg2 arg & ECHO "Did prod"

当我从 cmd.exe 运行它时,又打开了两个 cmd 窗口,都执行了脚本,然后窗口没有关闭。当我尝试为此使用 Windows 调度程序时,它会失败,因为“资源仍在使用中”

此外,ECHO 发生在原始窗口中(它们应该发生的地方),但会立即发生,而不是在启动任务完成时发生。

【问题讨论】:

  • 可能是因为脚本中的某些内容而导致窗口无法关闭?暂停?你能给我们看剧本吗?并且“在父窗口中由 start 启动的进程后回显”似乎是一个失败的原因。
  • 命令似乎退出了。新的 cmd 窗口显示 C:\> 并且该提示有效。
  • start "" cmd /C your-script -args?

标签: windows batch-file windows-task-scheduler


【解决方案1】:

start 创建一个独立的进程。一旦进程启动,就会产生消息并执行下一行。

如果您希望两个 started 进程并行执行,而您只是担心这些进程的窗口没有关闭,请插入

exit

在脚本中started

如果要串行执行流程,即在生成消息并启动流程2之前完成流程1,然后CALL批处理,不要start它们。

【讨论】:

  • 我无法修改脚本。有没有一种好方法来制作多行内联脚本?我可以做start (MYSCRIPT & exit) 或类似的事情吗?
  • 如何开始一个 2 行脚本:call C:\staging-script -arg1 arg -arg2 arg / exit。请记住,两个started 脚本将并行执行,因此如果一个正在使用另一个需要的资源,那么它们将相互干扰,因此您需要确保第二个不会在第一个之前启动完成,这将选择“将start更改为call
  • 可以内联吗?还是需要不同的文件?
  • 不同的文件。
【解决方案2】:

尝试在窗口执行的每个脚本的末尾添加退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2013-01-25
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多