运行Java,不显示控制台

本文介绍了一种在Windows环境下启动Java程序时避免DOS窗口闪烁的方法。通过使用批处理文件,并在首行加入@echooff命令,可以有效解决运行Java程序时DOS窗口短暂出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多朋友在WINDOWS下会用批处理去启动自己的java程序,

一般的写法是

运行class

java xx

 

运行jar

java -jar xxx.jar

但是这样运行会有一个恶心的对话框停在那直到我们关闭程序。

 

 

于是很多人说可以这样

运行class

start javaw xx

运行jar

start javaw -jar xxx.jar  

 

这种方法DOS窗口还是会一闪而过,这就算解决问题了吗?!网上很多人说是的.

对我们这种追求完美的人来说闪一下还是不能接受滴.

 

于是终极解决方案出现了!

那就是在批处理第一行加上@echo off

 

这样我们的批处理就变成了

 

运行class

@echo off

start javaw xx

 

运行jar

@echo off

start javaw -jar xxx.jar  

 

 

快试试吧,绝对不闪了。哈哈哈。

 

解释一下

 echo off

表示在此语句后所有运行的命令都不显示命令行本身

@ 表示运行时不显示本命令行

 

 

想当年玩D版游戏的时候,虚拟光驱还是命令行方式的,为了让一个游戏正常运行,往往要写很长的批处理,那时候俺这种完美主义者就认识到了@echo off 的重要性了。

<think>我们参考了多个引用,其中引用[1]、[3]和[5]提供了几种同的方法来隐藏bat文件运行控制台窗口。用户需求:运行bat文件显示控制台窗口。方法一(来自引用[1]和[3]):使用vbs脚本调用bat文件,并设置运行方式为隐藏窗口。步骤:1.创建一个vbs文件(例如:run_hidden.vbs),内容如下:set shell= CreateObject("WScript.Shell")shell.Run"你的bat文件路径.bat",0, false2.运行这个vbs文件即可,这样bat文件将在后台运行显示控制台窗口。方法二(来自引用[3]):在bat文件头部添加代码,使其在运行隐藏自身窗口。步骤:将以下代码添加到bat文件的开头:@echooffif"%1"=="h"goto beginstart mshta vbscript:createobject("wscript.shell").run("""%~0""h",0)(window.close)&&exit:begin::以下是你的bat文件原有命令方法三(来自引用[5]):如果bat文件是启动Java程序,可以使用javaw命令(无控制台窗口)代替java命令。但注意,这个方法只适用于Java程序。例如:将原来使用java的命令行改为javaw。方法四(来自引用[4]):修改bat文件中的启动命令,将start改为run(针对Tomcat的startup.bat)。但这个方法只适用于Tomcat,且目的是将两个控制台合并为一个,并能完全隐藏窗口。所以适用于隐藏窗口的需求。根据用户需求,推荐方法一和方法二。注意:方法二实际上也是通过创建一个vbs脚本来隐藏窗口,只过它把创建vbs的过程内嵌到了bat文件中,在运行会自动调用vbs来重新运行自己(隐藏模式)。因此,我们给出两种推荐方案:方案1(使用外部vbs文件):1.创建一个vbs文件,例如:hide_run.vbs,内容为:Setws= CreateObject("WScript.Shell")ws.Run"你的bat文件路径.bat",02.双击运行这个vbs文件,即可隐藏运行bat。方案2(修改bat文件自身):修改bat文件,在开头添加如下代码:@echooffif"%1"=="h"goto beginmshtavbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit:beginREM下面写你的bat文件原有命令注意:方案二中,我们使用了mshta来执行vbs脚本,它会创建一个隐藏的窗口运行bat文件(参数h),然后退出当前窗口。这样,当用户双击bat文件,会先启动一个隐藏的进程运行自身(带参数h),然后关闭当前窗口,从而实现隐藏。特别提醒:方案二在运行会先显示一个命令窗口然后立即关闭(如果直接双击bat文件的话),因为它在重新以隐藏方式运行自己后会退出当前窗口。但是,如果通过其他方式(比如任务计划)调用,则显示。如果希望双击也显示任何窗口,那么方案一(使用vbs)是更好的选择。因此,我们推荐方案一,因为它更简洁,且会出现闪屏。如果用户希望直接修改bat文件,则可以选择方案二。另外,如果bat文件是用于启动Java程序,那么方法三(使用javaw)是最直接的方法。例如,将原来使用:java-jarmyapp.jar改为:javaw-jarmyapp.jar总结:根据具体情况选择方案。-如果是Java程序,直接使用javaw。-否则,推荐使用vbs脚本(方案一)来启动bat文件,或者修改bat文件(方案二)使其自身支持隐藏运行。下面我们给出一个示例:示例(方案一):假设我们有一个bat文件:C:\mybatch\run.bat我们创建一个vbs文件:C:\mybatch\run_hidden.vbs,内容为:Set ws= WScript.CreateObject("WScript.Shell")ws.Run"C:\mybatch\run.bat",0然后运行run_hidden.vbs即可。示例(方案二):修改run.bat,在开头添加:@echo offif "%1"=="h" gotobeginstartmshtavbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit:beginREM下面为原有命令echo现在在后台运行显示窗口REM其他命令...这样,当直接双击run.bat,它会自动以隐藏模式重新运行自己,然后关闭当前窗口。注意:方案二中,start命令也可以换成直接调用mshta,但为了确保原窗口关闭,我们使用startmshta...然后立即退出(exit)。实际上,start会启动一个新进程(mshta),然后当前bat进程退出。而mshta会执行vbs脚本,vbs脚本会以隐藏方式运行这个bat文件(带参数h),然后mshta进程关闭。这样,最终只有隐藏的bat进程在运行。但是,方案二在运行会有一个短暂的命令窗口出现(然后关闭),而方案一(使用vbs)则完全没有窗口出现。因此,我们更推荐方案一。另外,引用[2]提到,javaw命令是专门为需要控制台窗口Java程序设计的,所以如果是Java程序,请优先使用javaw。如果用户需要将bat文件作为开机启动项,并且希望显示窗口,那么可以使用方案一的vbs方式,将vbs文件放入启动文件夹。最后,请注意,隐藏运行bat文件可能会影响错误信息的显示,因为错误信息会弹出。如果需要记录错误,可以在bat文件中使用输出重定向,例如:将命令输出重定向到日志文件。例如:在bat文件中:your_command>log.txt2>&1这样,命令的输出和错误都会写入log.txt文件。根据以上分析,我们给出回答。</think>### 如何隐藏运行BAT文件控制台窗口 根据您的需求和引用资料,以下是几种有效隐藏控制台窗口的方法: #### 方法1:使用VBS脚本封装(推荐) 1. 创建`.vbs`文件(如`run_hidden.vbs`),内容如下: ```vbscript Set ws = CreateObject("WScript.Shell") ws.Run "你的脚本.bat", 0, False ``` 2. 双击运行`.vbs`文件即可静默执行BAT脚本 **原理**:`WScript.Shell`的`Run`方法第二个参数`0`表示隐藏窗口[^1][^3] #### 方法2:修改BAT文件自身(无需额外文件) 在BAT文件**开头**添加: ```batch @echo off if "%1"=="h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit :begin REM 以下是您的原始命令... ``` **原理**:通过`mshta`执行VBScript,以隐藏模式重新启动自身[^3] #### 方法3:针对Java程序使用`javaw` 若BAT启动Java程序,将: ```batch java -jar your_app.jar ``` 改为: ```batch javaw -jar your_app.jar ``` **原理**:`javaw`专为无控制台窗口设计[^2] #### 方法4:Tomcat特殊处理 对于Tomcat的`startup.bat`: 1. 查找并修改: ```batch call "%executable%" start %cmd_line_args% ``` 改为: ```batch call "%executable%" run %cmd_line_args% ``` 2. 同确保`_RUNJAVA`指向`javaw.exe`: ```batch set _RUNJAVA="%JRE_HOME%\bin\javaw.exe" ``` **原理**:`run`参数避免创建新控制台,`javaw`消除Java控制台[^4][^5] --- ### 注意事项 1. **错误排查**:隐藏窗口后建议添加日志记录,例如: ```batch your_command > log.txt 2>&1 ``` 2. **权限要求**:后台运行可能需要管理员权限 3. **进程管理**:隐藏窗口后可通过任务管理器结束进程 > **推荐方案**:普通BAT脚本用**方法1**(VBS封装),Java程序用**方法3**(javaw),Tomcat用**方法4**。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值