我有一个批处理文件,它调用 Windows 更新例程(调用 explorer ms-settings:windowsupdate),然后使用 sendkeys 脚本发送按键,直到“检查更新”按钮处于焦点状态,然后切换它。我想在转到批处理文件的下一部分之前确定“Windows 更新”窗口是否仍处于打开状态,而无需使用 (taskkill /f /im "SystemSettings.exe") 命令将其关闭(例如,当我决定手动关闭界面窗口时)。我还没有想出使用什么查询来找出该窗口的状态;也就是说,它是仍然打开还是已关闭。使用 (sc query "wuauserv") 进行查询仅指示服务是否正在运行 [对我来说总是在运行],而不是“Windows 更新”窗口是否打开。
答案1
感谢 Yisroel 的建议。事实证明,SystemSettings.exe 是 Windows 更新窗口打开时运行的程序。窗口关闭时,该程序停止运行,因此我可以使用它来确定窗口是否打开:
:Loop
cls
echo.
echo Close the update window
echo when update conmpletes . . .
echo.
set SS=""
for /f "tokens=1" %%S in ('tasklist /m SystemSettings* ^| findstr /i /C:"SystemSettings.exe"') do set SS=%%S
echo String found=[%SS%]
if "%SS%"=="SystemSettings.exe" timeout /T 3 /nobreak>nul & goto Loop
echo Success - no longer found SystemSettings in tasklist