Windows bat隐藏运行窗口的几种方案

这篇具有很好参考价值的文章主要介绍了Windows bat隐藏运行窗口的几种方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

有些程序在执行批处理脚本时,可能会看到dos窗口,或者看到窗口一闪而过。如果批处理脚本执行过程中不需要与用户进行交互,那么为了提升用户体验,防止用户误操作,关闭了正在运行的批处理dos窗口,而导致的一些问题,建议将批处理放到后台(隐藏)运行。
接下来讲总结下都有哪些方式,可以隐藏bat运行时的窗口。(这里不讨论将窗口最小化)

二、测试数据

为了验证bat批处理确实在后台运行,而没有在dos窗口运行,使用如下test.bat测试脚本

@echo off
echo [%time%]: batch is running.
ping -n 11 127.0.0.1 > run_res.txt

如果批处理没有在后台运行,你将看到dos窗口停留大概10秒的时间,你可以通过生成的 run_res.txt 文件进行判断 dos窗口是否在后台成功运行

三、隐藏bat运行窗口方案

1. 使用VBScript脚本

可以编写一个VBScript脚本文件(例如hiderun.vbs),然后使用该脚本来运行.bat文件。在VBScript中,可以使用Shell对象的Run方法来运行.bat文件,并设置窗口风格为不显示。

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "%comspec% /c test.bat", 0

%comspec% 为系统环境变量,其值就是cmd.exe程序绝对路径。
然后通过双击hiderun.vbs(或在其他程序中运行这个vbs脚本),然后test.bat就在后台运行了(不会闪一下窗口)。

你也可以在另一个bat批处理中调用hiderun.vbs,调用方式如下,但是运行这个bat批处理会闪一下:

@echo f
::cscript解释器
cscript HideRun.vbs //nologo
::wscript解释器
wscript HideRun.vbs //nologo

2. 使用mshta调用js或vbs脚本

可以在原bat批处理中直接通过mshta调用jsvbs脚本,修改test.bat具体如下:

@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("%~nx0"^&" h",0)^&(window.close) && exit
::start mshta "javascript:new ActiveXObject('WScript.Shell').Run('%~nx0 h',0);window.close();" && exit
:begin
::以下为正常批处理命令,不可含有pause set/p等交互命令
echo [%time%]: batch is running.
ping -n 10 127.0.0.1 > run_res.txt

%0代表当前运行的批处理文件名,%~nx0表示将%0扩展到文件名和扩展名,即当前运行的批处理的绝对路径。关于Wscript.Shell 对象的更多说明,请参考:Wscript.Shell 对象详细介绍

需要注意的是,这种方式运行bat批处理,会闪一下。

3. 将bat编译为exe程序

使用第三方工具,将.bat文件转换为.exe可执行程序文件,例如使用Bat To Exe Converter工具,下载地址:https://soft.3dmgame.com/down/202761.html
没使用官网的,你懂的
下载解压后,点击Bat_To_Exe_Converter.exe,打开直接使用
bat批处理隐藏执行,Windows,Batch,windows

注意:选项-exe格式设置为32位或64位隐形,然后再转换为xxx.exe文件即可。
然后通过双击生成的xxx.exe程序(或在其他程序中运行这个exe程序)即可实现在后台运行的效果。
​这种方式运行时不会删一下,完全在后台运行。

4. 使用任务计划程序

创建一个定时任务,怎么创建我就不细讲了。其中有两点需要强调下
1)任务的操作设置中程序或脚本填写需要运行的test.bat批处理全路径,添加参数起始于按需填写;
2)任务的常规-安全选项中,一定要选择不管用户是否登录都要运行,任务执行bat批处理时才能在后台运行。(如果选择只有在用户登录时选项,则还是会弹出dos窗口,我也不明白这是为啥,我的操作系统是Win10)
bat批处理隐藏执行,Windows,Batch,windows

总结:

  1. 方案1,内置的VBScript,使用简单
  2. 方案2,运行bat时会闪一下,其他方案都没这个问题
  3. 方案3,需要下载第三方工具,将bat转换为exe再执行
  4. 方案4,定时任务是比较常用的方式,尤其适用于需要定期执行的任务


参考资料:
运行bat时隐藏cmd窗口
Wscript.Shell 对象详细介绍文章来源地址https://www.toymoban.com/news/detail-661887.html

到了这里,关于Windows bat隐藏运行窗口的几种方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python打开Windows可执行性程序的几种方法(Windows窗口自动化第一步)

    方法一:用Pywinauto第三包 方法二:使用os.system函数运行其他程序 方法三:win32api第三包使用ShellExecute函数运行其他程序 方法四:使用win32process.CreateProcess函数 方法七:用ctpyes模块调用C函数

    2024年02月16日
    浏览(43)
  • Windows 批处理(bat) findstr命令使用教程

    结果: 详细参数列表 参数 参数说明 /B 在一行的开始配对模式。 /E 在一行的结尾配对模式。 /L 按字使用搜索字符串。 /R 将搜索字符串作为一般表达式使用。 /S 在当前目录和所有子目录中搜索匹配文件。 /I 指定搜索不分大小写。 /X 打印完全匹配的行。 /V 只打印不包含匹配

    2024年02月10日
    浏览(59)
  • Windows bat 批处理 日期时间格式化

    有一个批处理脚本,脚本中根据当前日期,动态的生成日志文件, 如:当前是 2023年06月20日,我希望生成的日志文件名为:XX_20230620.log Windows 在批处理中 获取日期和时间的方式如下: echo %time% 输出的时间格式: HH:MM:SS.NN HH :时 MM :分 SS :秒 NN :厘秒(注意不是毫秒,1秒

    2024年02月11日
    浏览(55)
  • 快速修改分辨率 Windows bat 批处理

    首先需要两个GitHub上的开源项目 https://github.com/imniko/SetDPI/releases 这个下载realese里的 SetDpi.exe 直链:https://github.com/imniko/SetDPI/releases/download/v1.0/SetDpi.exe https://github.com/RickStrahl/SetResolution 这个直接在仓库里有binary二进制文件 sr.exe 直链:https://github.com/RickStrahl/SetResolution/blob/mast

    2024年02月09日
    浏览(33)
  • windows bat批处理基础命令学习教程

    1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。 2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。 3.批处理的编程能力远不如C语言等编程语言,也十分不规范。 4

    2024年02月06日
    浏览(41)
  • Windows 批处理(bat) for循环语句使用教程

    注意事项: f or、in 和 do是for语句的 ,它们三个缺一不可; 在 in 之后,do 之前的 括号\\\"()\\\"不能省略 ,do 后可以有括号,且 括号内不能有注释 %%i 是for语句中 对形式变量的引用 ; for语句的形式变量I, 可以换成26个字母中的任意一 个,这些字母会 区分大小写 ; in和

    2024年02月04日
    浏览(37)
  • Windows 批处理(bat) if条件判断语句使用教程

    在bat脚本中,if条件判断语句共有6种比较操作符,分别为 操作符(不区分大小写) 描述 全称 equ 等于 equal neq 不等于 no equal lss 小于 less than leq 小于等于 leq less than or equal gtr 大于 greater than geq 大于等于 geq greater than or equal 其中,只有等于操作符可以使用符号 “==” 表示,其

    2024年02月03日
    浏览(39)
  • Jenkins通过SSH远程执行Windows批处理bat程序

    确保Windows上成功安装了OpenSSH,可参考:Windows系统下安装OpenSSH-CSDN博客 自行百度 系统管理系统配置,找到Publish over SSH,点击新增 点击 Test Configuration,提示Success,即成功。 关于Remote Directoy参数: 1.为空或不填,会工作在C:UsersAdministrator目录下,即Username对应的目录下 2.如

    2024年04月10日
    浏览(51)
  • Windows BAT批处理字符串相关操作(字符串定义、分割、拼接、替换、切片、查找)

    使用 set 来定义字符串 代码说明: 将字符串Hello赋值给string1的变量 使用 %string1%%string2% 的方式完成字符串的拼接。 代码说明: 用来连接字符串的字符串,如果包含了特殊字符则需要使用 ^ 转义,并且需要使用 \\\"\\\" 括起来,特殊字符包括(但不限于): 符号 作用 @ 命令行回显

    2024年02月12日
    浏览(29)
  • windows系统cmake生成c++动态库无lib文件解决方法 && bat文件批处理cmd命令

    作为cmake初学者,在windows系统下使用cmake生成c++动态库时出现了下图所示问题,是关于lib文件的。找了一圈,也没发现生成有lib文件。 在google上查,才发现windows系统下动态库生成lib文件,还需要添加以下命令: 生成动态库Demo(链接在此) 文件目录架构: ——源文件目录 —

    2023年04月25日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包