关闭在 运行 批处理文件时弹出的 window
Closing a window which pops up while running batch file
有一个我正在尝试自动化的应用程序构建过程。为此,我写了一个 java 文件,每 24 小时 运行s。
从这里调用一个批处理文件,运行 每次调用时都会构建应用程序。
我 运行 遇到了一个小问题,当构建由于文件不完整或无效而失败时,会弹出 window 提示我查看日志。
由于我还没有编写构建文件,所以我不太确定它是从哪里创建的。我想知道我是否可以在 bat 文件的进程 运行 中关闭此 window。
使用 taskkill
可能可行,但您必须设计一个过滤器,理想情况下 仅 匹配显示 window 和从不 匹配任何其他进程。类似于:
taskkill /im program.exe
或者也许:
taskkill /fi "windowtitle eq title*"
您可能还想包含 /f
标志以强制终止。
您还必须尝试确保 taskkill
命令不会 运行 太快并且在创建弹出窗口 window 之前。您可以尝试查询是否存在这样的 process/window;你最好的选择可能是 wmic
。也许:
@echo off
setlocal enabledelayedexpansion
set title=Notepad
set pid=
for /f %%i in ('wmic process where "caption like \"%%!title!%%\"" get processid^| findstr /r [0-9]') do @set pid=%%i
if "!pid!" neq "" taskkill /f /pid !pid!
不能保证这会一直有效,但这可能是您能做的最好的了。
有一个我正在尝试自动化的应用程序构建过程。为此,我写了一个 java 文件,每 24 小时 运行s。 从这里调用一个批处理文件,运行 每次调用时都会构建应用程序。
我 运行 遇到了一个小问题,当构建由于文件不完整或无效而失败时,会弹出 window 提示我查看日志。 由于我还没有编写构建文件,所以我不太确定它是从哪里创建的。我想知道我是否可以在 bat 文件的进程 运行 中关闭此 window。
使用 taskkill
可能可行,但您必须设计一个过滤器,理想情况下 仅 匹配显示 window 和从不 匹配任何其他进程。类似于:
taskkill /im program.exe
或者也许:
taskkill /fi "windowtitle eq title*"
您可能还想包含 /f
标志以强制终止。
您还必须尝试确保 taskkill
命令不会 运行 太快并且在创建弹出窗口 window 之前。您可以尝试查询是否存在这样的 process/window;你最好的选择可能是 wmic
。也许:
@echo off
setlocal enabledelayedexpansion
set title=Notepad
set pid=
for /f %%i in ('wmic process where "caption like \"%%!title!%%\"" get processid^| findstr /r [0-9]') do @set pid=%%i
if "!pid!" neq "" taskkill /f /pid !pid!
不能保证这会一直有效,但这可能是您能做的最好的了。