文章

如何优雅地隐藏批处理(BAT)程序的命令行窗口

如何优雅地隐藏批处理(BAT)程序的命令行窗口

在日常使用批处理(BAT)程序时,我们常常会遇到一个黑乎乎的命令行窗口,这不仅影响美观,而且在关闭窗口时会导致正在运行的程序也被一并关闭。为了解决这个问题,我总结了网上几种有效的方法,下面将逐一介绍。

方法一:利用BAT隐藏窗口的命令

原始代码

1
2
3
4
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin

将这段代码放在BAT文件的开头即可实现窗口隐藏。然而,这种方法在设置计划任务时可能会报错。

改进代码

为了避免上述问题,可以尝试以下改进代码:

1
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit

这样修改后,计划任务也不会有问题了。

方法二:VBS脚本大法

基本代码

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c 批处理程序名", vbhide

亲测有效,可以成功隐藏命令行窗口。

相对路径修改

如果需要使用相对路径,可以对VBS脚本进行如下修改:

Set ws = CreateObject("Wscript.Shell")
getfolder = left(wscript.scriptfullname, instrrev(wscript.scriptfullname, "\") - 1)
ws.run "cmd /c " & getfolder & "批处理程序名", vbhide

这样就可以根据脚本所在目录自动找到批处理程序。

本文由作者按照 CC BY 4.0 进行授权