如何使windows批处理文件在可执行文件运行时暂停?

如何使windows批处理文件在可执行文件运行时暂停?,windows,batch-file,Windows,Batch File,我正在编写一个批处理文件,在其中调用一个EXE来执行。现在,调用EXE后的语句在EXE完成执行之前不应执行。如何在批处理文件(在Windows上)中执行此操作?您可以使用 PAUSE 在批处理脚本中,但我不理解您的问题。批处理文件中的语句是按顺序执行的。因此,如果批处理文件如下所示: first.exe next.exe 如果第一个已完成,则执行“下一个”。这取决于.exe的工作方式。恐怕我没有所有的技术细节或术语,但是一些.exe文件在启动后会立即返回会话控制权,而其他文件在程序终止后才返

我正在编写一个批处理文件,在其中调用一个EXE来执行。现在,调用EXE后的语句在EXE完成执行之前不应执行。如何在批处理文件(在Windows上)中执行此操作?

您可以使用

PAUSE

在批处理脚本中,但我不理解您的问题。

批处理文件中的语句是按顺序执行的。因此,如果批处理文件如下所示:

first.exe
next.exe

如果第一个已完成,则执行“下一个”。

这取决于.exe的工作方式。恐怕我没有所有的技术细节或术语,但是一些.exe文件在启动后会立即返回会话控制权,而其他文件在程序终止后才返回控制权

第二种情况很简单,因为在前一种情况完成之前,文件后面的命令不会执行,所以我假设您面临的是第1种情况

如果执行在每次运行时花费(大约)相同的时间,一个简单的解决方法/技巧是使用带有延迟的ping命令

PING 127.0.0.1 -n 1 -w 120000 >NUL
这将强制ping命令以120000毫秒(2分钟)的延迟运行一次

还有一篇关于更复杂(但更可靠的方法)的好文章,有更详细的解释。简而言之,您可以查询任务列表,搜索正在等待的可执行文件。一旦它不在那里,你就继续处理批处理文件。它也使用ping方法,但方式不同。

您可以使用带有参数/wait的“start”命令
使用start/?有关详细信息,请访问命令行。

以下是非常简单的过程。只需保持以下行等待10秒,然后继续执行其他命令

START /WAIT First.exe
START /WAIT Second.exe
超时/t10


这就是你要做的。我希望您喜欢我的技巧。

用explorer.exe试试,您会看到它在程序启动后返回,而不是完成。@Pax:这取决于问题的范围。通常,在批处理文件中,您通常只放置命令行工具,而不放置GUI工具。通常但不总是-我在“从家做起”虚拟框中有一个启动批处理文件,用于启动图形VPN客户端(然后是邮件、bug工具等)。幸运的是,它有一个命令行开关,导致它在完成之前不会返回,因为我无法启动/等待。但是你的观点被采纳了。正确的方法实际上是:PING 127.1-n10-w1000>NULSorry,但是提议的PING解决方案非常糟糕。它容易出错,难以理解。暂停一段时间(例如超时)有很多更好的方法。这就是为什么我称之为黑客。
ping127.0.0.1-n13>nul
等待12秒,从
pause
等待用户按键。这对于自动脚本不起作用,因为用户不在那里。詹姆斯想要一个自动脚本来运行一个程序,等待它完成并退出,然后运行第二个程序。我认为这在一定程度上取决于你运行的应用程序。如果应用程序是启动其他服务或GUI的启动器,那么我认为如果不编写应用程序来监视进程和/或窗口,您几乎无能为力。