windows - 如何在不使用 TASKILL [BATCH] 的情况下关闭从 CMD 启动的可执行文件的窗口

标签 windows batch-file cmd

我已经制作了一个基本的 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。

一切正常,但我想知道更新过程完成后是否有任何方法可以自动关闭可执行窗口。

enter image description here

我突然想到在 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/

相关文章:

windows - 获取 HID 设备的功能报告描述符的 native 方法?

c++ - 处理高速数据时避免 QSerialPort 超时

c# - 批处理文件启动应用程序并传递多个参数将空格切换为á

c# dotnet CLI "error: There are no versions available for the package ' Newtonsoft.Json'。”

windows - 按批处理 "CMD"文件为特定系统执行特定作业

windows - RegOpenKeyEx/RegGetValue 在存在的键上返回 ERROR_FILE_NOT_FOUND

java - Gradle、Cucumber 和 Windows 命令长度

batch-file - 强制 bat 文件使用非默认的 cmd.exe

batch-file - 批处理文件: suppress command error output when used in a for loop

ftp - Windows 命令行 ftp 放置/上传早于 1 分钟的文件