我必须在指定目录中的所有子目录中找到卸载程序。找到卸载程序之后,我需要运行它。
@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社区的更多建议。
发布于 2018-03-20 20:19:05
假设您希望1)在特定路径及其子目录中查找所有名为un*.exe的文件,2)执行每个文件,3)在执行下一个文件之前等待每个可执行文件完成,您可以在PowerShell中编写如下内容:
Get-ChildItem "C:\Uninstaller Path\un*.exe" -Recurse | ForEach-Object {
Start-Process $_ -Wait
}发布于 2018-03-20 13:21:08
您可以使用start /wait。比较以下两行:
for %%i in (*.txt) do notepad "%%i"
for %%i in (*.txt) do start /wait notepad "%%i"第一个将打开几个记事本中的所有匹配文件,第二个只打开下一个记事本,当您关闭前一个记事本时。
https://stackoverflow.com/questions/49385184
复制相似问题