希望是一个快速的问题。我正在无人参与的脚本中安装一组驱动程序。其中一个驱动程序(英特尔USB3驱动程序)在完成后启动Windows驱动程序查找器应用程序(“drvinst.exe”),然后当nVidia驱动程序尝试运行它们时取消,因为该向导在后台运行。
:INSTALLLAPTOP79
.\ELAN\Touchpad\Setup.exe /s /a /s
.\Intel\Chipset\Setup.exe -s -norestart
.\Intel\Graphics\Setup.exe -s
.\Intel\MEI\Setup.exe -s
.\Intel\USB3\Setup.exe -s
.\Realtek\Audio\Setup.exe /s
.\Realtek\CardReader\Setup.exe /s
TIMEOUT 180
.\nVidia\Graphics\Setup.exe -n -s
GOTO :INSTALLLAPTOPWIFI
目前的代码在上面 - 但它不是很优雅。基本上如果系统比“正常”慢,那么它将失败,因为180秒是不够的。我可以增加这个值,但这对我来说很麻烦。我基本上正在寻找一种方法来“检查”以查看“drvinst.exe”是否仍在运行,如果是,则等待一段时间 - 然后再次进行检查。
有什么想法吗?
答案 0 :(得分:3)
它不能保证工作(这取决于安装程序如何启动驱动程序查找程序),但是:
start /wait command...
可以做到这一点。请注意,如果要执行的命令包含空格,并且需要用双引号括起来,则您需要:
start /wait "" "c:\program files\something\..."
否则它将命令作为命令提示符的标题。
答案 1 :(得分:1)
@ECHO OFF
SETLOCAL
notepad
:waitloop
TASKLIST /fi "imagename eq notepad.exe" >NUL
IF ERRORLEVEL 1 timeout /t 1 /n&GOTO waitloop
GOTO :EOF
这是一个等待notepad.exe
关闭的简单方法。适应你的意愿......
@ECHO OFF
SETLOCAL
notepad
:waitloop
TASKLIST |find "notepad.exe" >NUL
IF ERRORLEVEL 1 timeout /t 1 /n&GOTO waitloop
GOTO :EOF
也应该起作用
答案 2 :(得分:0)
这在Windows 10(1903)中对我有效。警告:如果将它用于多次运行的进程,它将等待所有全部完成,然后再继续。
基于@Magoo的here,对我不起作用,但使我走上了正轨。
const gameName = 'g.info';
<List filterDefaultValues={{ name: !gameName }} pagination={<ListPagination />} perPage={30} sort={{ field: '_id', order: 'ASC' }} actions={<Actions />} {...props}>
答案 3 :(得分:-1)
我不知道这是否是最好的方法,但我知道它可以100%工作 当我需要等待时,我在脚本中使用了调用。
:INSTALLLAPTOP79
Call \ELAN\Touchpad\Setup.exe /s /a /s
Call \Intel\Chipset\Setup.exe -s -norestart
Call \Intel\Graphics\Setup.exe -s
Call \Intel\MEI\Setup.exe -s
Call \Intel\USB3\Setup.exe -s
Call \Realtek\Audio\Setup.exe /s
Call \Realtek\CardReader\Setup.exe /s
Call \nVidia\Graphics\Setup.exe -n -s
GOTO :INSTALLLAPTOPWIFI
调用将使脚本等到正在运行的exe完成。
不确定的目的是什么。在\服务之前,但如果有原因,您可能需要它。