【问题标题】:How to NOT wait for a process to complete in batch script?如何不在批处理脚本中等待进程完成?
【发布时间】:2010-03-16 03:03:19
【问题描述】:

我有一个调用进程的批处理脚本,目前它等待进程完成,然后再转到下一行。有没有办法(或开关)让它不等待而只是产生进程并继续?我使用的是 Windows 2008。

【问题讨论】:

标签: windows command-line batch-file


【解决方案1】:

为什么不只是start somecmd.exestart "" "some command with spaces.exe"

请注意,如果您的命令有空格,则必须在其周围加上引号,但如果 start 的第一个参数在其周围有引号,则该命令是 second 参数,所以我有两组那里的引号。

【讨论】:

  • 回答您关于“为什么不”的问题?好吧,因为完全不直观,dos 会以某种方式假设将您的命令放在引号中会神奇地使其成为第二个参数。事实上,即使给出了您的解释,也不清楚为什么第二个示例有效,但确实有效,我感谢您发布此内容。
  • 我刚刚签出了 start /?并且似乎如果您将某些内容放在引号中,它会假定这是窗口的“标题”,而不是它神奇地成为第二个参数。虽然,在我最初阅读该文档时,并不清楚如何实际执行您的示例。
【解决方案2】:

这可能就足够了。

call "cmd /c start notepad.exe"

【讨论】:

  • 这适用于 Visual Studio 后期构建事件以启动 excel。
【解决方案3】:

使用

START c:\wherever\whatever.exe

【讨论】:

  • 通过START "My Title" C:\wherever\whatever.exe提供标题(也可以将标题指定为空白字符串"")。最好指定一个标题,因为虽然“标题是可选的,[...] 根据选择的其他选项,如果省略它可能会遇到问题”(ss64.com/nt/start.html)。
  • 如果您想稍后停止任务,请使用tskill whatever,其中“whatever”是程序名称。通常是没有“.exe”的文件名。如果没有,在tasklist的返回列表中搜索名称。
【解决方案4】:

SCRIPTRUNNER

scriptrunner -appvscript notepad

该命令有一些不错的功能,如超时、等待等。

SCHTASKS

SCHTASKS /create /tn BatRunner /tr "%cd%\first.bat" /sc ONCE /sd 01/01/1910 /st 00:00
SCHTASKS /Run /TN BatRunner
SCHTASKS /Delete /TN BatRunner /F

此命令主要目的是调度,但您可以使用它来启动另一个命令而无需等待

WMIC

WMIC process call create "notepad"

这将返回已启动进程的 PID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多