首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows脚本中启动next之前,等待一个程序完成

在Windows脚本中启动next之前,等待一个程序完成
EN

Stack Overflow用户
提问于 2018-03-20 13:12:17
回答 2查看 1K关注 0票数 1

我必须在指定目录中的所有子目录中找到卸载程序。找到卸载程序之后,我需要运行它。

代码语言:javascript
复制
@setlocal enabledelayedexpansion
@for /r %%i in ( un*.exe) do (
        @echo Found file: %%~nxi            

        %%i             
        )

我已经能够搜索子目录并使用上面的代码在子目录中找到卸载程序。

问题:命令%%i执行uninstaller.exe,控件立即返回到命令提示符。由于将控制立即返回到命令提示符,因此将执行for-loop的下一次迭代,因此也会启动下一个卸载程序(通过命令%%i)。

我需要的:,我想留在for-loop的当前迭代中,直到命令%%i启动的卸载程序完成为止。

PS:卸载程序不会自行完成。他们要求提供几个选项,因此,我想一个接一个地启动它们(这样用户就不会感到困惑)。

PS-2:正如在下面的评论中所指出的,PowerShell可以解决这个问题,所以我也在寻找来自PowerShell社区的更多建议。

EN

回答 2

Stack Overflow用户

发布于 2018-03-20 20:19:05

假设您希望1)在特定路径及其子目录中查找所有名为un*.exe的文件,2)执行每个文件,3)在执行下一个文件之前等待每个可执行文件完成,您可以在PowerShell中编写如下内容:

代码语言:javascript
复制
Get-ChildItem "C:\Uninstaller Path\un*.exe" -Recurse | ForEach-Object {
  Start-Process $_ -Wait
}
票数 1
EN

Stack Overflow用户

发布于 2018-03-20 13:21:08

您可以使用start /wait。比较以下两行:

代码语言:javascript
复制
for %%i in (*.txt) do notepad "%%i"

for %%i in (*.txt) do start /wait notepad "%%i"

第一个将打开几个记事本中的所有匹配文件,第二个只打开下一个记事本,当您关闭前一个记事本时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49385184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档