我已经制作了一个基本的 BAT 脚本来从 Avast 病毒数据库下载更新,然后通过运行下载的文件来应用它们。
@ECHO OFF
set downloadFolder=C:\Users\myuser\Downloads\Avast_updates
set downloadUrl=https://install.avcdn.net/vps18/vpsupd.exe
bitsadmin /transfer myAvastUpdates /download /priority normal ^
"%downloadUrl%" "%downloadFolder%\vpsupd.exe"
start /min "Update..." "%downloadFolder%\vpsupd.exe"
exit
另外,我创建了一个 Windows 任务,每 x 小时运行一次 BAT。
一切正常,但我想知道更新过程完成后是否有任何方法可以自动关闭可执行窗口。
我突然想到在 x 秒后使用 TASKILL
,但这并不能保证更新过程在 x 秒内完成,有时可能需要更长的时间,有时可能更短,而且我不这样做'不想在程序安全安装程序中使用该命令。
然后我想到通过 WshShell.SendKeys
发送一个“Enter”:
set SendKeys=CScript //nologo //E:JScript "%~F0"
cls
timeout /t 5 >nul
%SendKeys% "{ENTER}"
@end
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
但它不起作用,因为该窗口没有用“Enter”或“ALT F4”关闭,只有当我们点击“完成”或十字“x”关闭窗口时它才会关闭(如果它工作的话会有重新设置时间的问题)。
有没有办法在更新过程完成后自动关闭该窗口?
最佳答案
vpsupd.exe
支持 /silent
开关来抑制用户交互。
start/min
不是必需的,因为它只是打开另一个 cmd
窗口,然后运行可执行文件。所以就这样做吧:
vpsupd.exe /silent
关于windows - 如何在不使用 TASKILL [BATCH] 的情况下关闭从 CMD 启动的可执行文件的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63212566/