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

文章目录

  • 一、背景
  • 二、测试数据
  • 三、隐藏bat运行窗口方案
    • 1. 使用`VBScript`脚本
    • 2. 使用`mshta`调用`js`或`vbs`脚本
    • 3. 将`bat`编译为`exe`程序
    • 4. 使用`任务计划程序`

一、背景

有些程序在执行批处理脚本时,可能会看到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调用jsvbs脚本

可以在原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 to exe

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

4. 使用任务计划程序

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

总结:

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


参考资料:
运行bat时隐藏cmd窗口
Wscript.Shell 对象详细介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(EMQX)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到EMQX

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡,天线 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内(注意不要弄错方向) 同时接入天线 2.2 连接ST-Link仿真…

Python 算法基础篇:大O符号表示法和常见时间复杂度分析

Python 算法基础篇:大 O 符号表示法和常见时间复杂度分析 引言 1. 大 O 符号表示法 a ) 大 O 符号的定义 b ) 示例代码 2. 常见时间复杂度分析总结 引言 在分析和比较算法的性能时,时间复杂度是一项重要的指标。而大 O 符号表示法是用来描述算法时间复杂…

动态规划01背包之416分割等和子集(第10道)

题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例: 解法: 先复习一下01背包问题: dp[i][j]的含义:从下标为[0-i]的物品里…

Linux->初识计算机网络

目录 前言: 1 网络发展背景 2 协议 2.1 网络协议初识 2.2 协议分层 2.3 OSI、TCP/IP层状模型 2.4 协议和操作系统的关系 2.5 根据协议栈的通信 3 网络中的地址管理 前言: 本篇当中没有任何关于网络编程的讲解,全部是对网络的宏观理解…

【数学建模】 灰色预测模型

数学建模——预测模型简介 https://www.cnblogs.com/somedayLi/p/9542835.html 灰色预测模型 https://blog.csdn.net/qq_39798423/article/details/89283000?ops_request_misc&request_id&biz_id102&utm_term%E7%81%B0%E8%89%B2%E9%A2%84%E6%B5%8B%E6%A8%…

Mysql数据库备份、索引、视图

目录 备份:先创建如下数据库和表 1、使用mysqldump命令备份数据库中的所有表 2、备份booksDB数据库中的books表 3、使用mysqldump备份booksDB和test数据库 4、使用mysqldump备份服务器中的所有数据库 5、使用mysql命令还原第二题导出的book表 6、进入数据库使…

Jenkins Pipline使用SonarScanner 检查 VUE、js 项目 中遇到的Bug

在 Jenkins 上使用 Pipline 进行集成,利用 SonarScanner 做静态代码扫描的过程中,遇到了几个问题,这里记录了一点解决办法。 在Jenkins上使用Pipline进行集成,利用SonarScanner做静态代码扫描的过程中,遇到了几个问题&…

MySQL 进阶之王,MySql 性能实战源码 + 笔记 + 项目实战

随着互联网时代的兴起,MySQL 在数据库领域日益显现出举足轻重的地位,它不断扩大的用户群体就是很好的证明。在这样的背景下,需要越来越多的人在知识资源方面为之付出,将自己对 MySQL 数据库的学习过程、运维经验、个人理解等记录下…

scripy其他

持久化 # 爬回来,解析完了,想存储,有两种方案 ## 方案一:一般不用 parse必须有return值,必须是列表套字典形式--->使用命令,可以保存到json格式中,csv中scrapy crawl cnblogs -o cnbogs.j…

生活的意义

当前在工作中,但是有30分钟的等待时间,不知道要说点什么,突然想到了:人生的意义!本人的一个小小的思考。由于话题太过敏感 标题就写了 "生活的意义" 每天上班日复一日,没有爱好。生活中除了日常…

Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

对于大多数 Web3 团队来说,构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务,构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据,并将其与外部数据源进行整合和分析工作量是十分巨大的: 区块链…

http请求状态码汇总

目录 常见的状态码 所有状态码汇总 1xx——临时响应信息提示;这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx 2xx——成功 3xx——重定向:表示要完成请求,需要进一步操作。通常,…

《重构》:Consolidate Conditional Expression

重点看一下:逻辑与,出现多层if嵌套的情况 实际开发中,与门应该是最容易也是最应该被优化的。 合并后的条件代码会表述“实际上只有一次条件检查,只不过有多个并列条件需要检查,从而使这一次检查的用意更清晰。当然&am…

13. Mysql基本操作以及语法

1 数据库基础 1.1 数据库概念和术语 数据库是用于存储和管理数据的系统。它由一组相关数据的集合和用于访问、管理和操作这些数据的软件组成。数据库概念和术语包括以下内容: 数据库管理系统(Database Management System,DBMS)…

RocketMQ学习笔记(实操篇)

目录 基本操作 启动 测试 双主双从集群搭建 总体架构 工作流程 服务器环境 Host添加信息 防火墙配置 环境变量配置 创建消息存储路径 broker配置文件 修改启动脚本文件 服务启动 查看进程状态 查看日志 mqadmin管理工具 使用方式 命令介绍 集群监控平台搭…

基于深度学习的高精度刀具检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度刀具检测识别系统可用于日常生活中或野外来检测与定位刀具目标,利用深度学习算法可实现图片、视频、摄像头等方式的刀具目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

HTML <meta> 标签

定义和用法 <meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。 <meta> 标签位于文档的头部,不包含任何内容。<meta> 标签的属性定义了与文档相关联的名称/值对。 浏览器支持 元素ChromeIEFirefoxSafa…

HOT67-寻找旋转排序数组中的最小值

leetcode原题链接&#xff1a;寻找旋转排序数组中的最小值 题目描述 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转…

谈谈——互联网生活中的隐私保护

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…