批处理配合vbs隐藏CMD窗口后台运行脚本

24

由于未知原因,使用Windows任务计划程序运行常规批处理脚本即使勾选了隐藏也始终无法隐藏CMD窗口,一番查找用如下脚本解决。

新建bat脚本,内容如下:

@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
E:\frpc\frpc.exe -c E:\frpc\frpc.ini #可执行的命令

关于批处理命令的说明:
如果双击一个批处理,等价于参数为空,而一些应用程序需要参数,比如在cmd窗口输入shutdowm -s -t 0,其中-s -t 0就为参数。shutdown为%0,-s为%1,-t为%2,以此类推。

第一行我们先跳过,看第二行,表示利用mshta创建一个vbs程序,内容为:

createobject(“wscript.shell”).run(……)(window.close)&&exit

如果运行的批处理名为a.bat,在C:\下,那%0代表C:\a.bat,%~nx0代表a.bat。h即为参数%1,0表示隐藏运行。由于你双击运行,故第一次批处理%1为空,if不成立,转而运行下一句。然后再次打开自己,并传递参数h,此时if成立,跳转至begin开始运行。

参考链接:
https://blog.csdn.net/haodawei123/article/details/86238706
https://www.bilibili.com/read/cv16505716