使用.bat文件在Windows下运行Java程序时怎样避免DOS窗口

本文介绍如何在启动Java程序时避免DOS窗口显示。通过修改启动命令,使用start javaw替代java命令,可以在运行Java应用程序的过程中隐藏DOS窗口,提升用户体验。

我们在启动脚本中一般使用类似如下的命令执行一个Java程序:
    java xxx.xxx.MailClass.class
或:
    java -jar xxx.jar
这样在Java程序启动时,加载的DOS窗口一直出现,直到你关闭了Java程序才一起关闭。

很多朋友询问怎样才能避免这个DOS窗口,你只需要把.bat中的启动命名修改为:
    start javaw xxx.xxx.MailClass.class
或:
    start javaw -jar xxx.jar
即可。


注:DOS窗口还是会一闪而过,因为javaw是一个需要dos加载的命令。

Windows批处理脚本中实现类似Unix/Linux中的`tee`功能,即将命令的输出同显示在控制台(DOS窗口)并保存到日志文件中,可以通过以下几种方式来实现: ### 使用 `cmd /c` 和 `tee` 命令(推荐) 如果你希望使用类似于Unix的`tee`命令,可以在Windows中安装第三方工具,如GNUWin32或UnxUtils提供的`tee`工具包。下载并安装后,你可以直接在批处理脚本使用`tee`命令[^3]。 例如,运行一个Java程序并将输出同显示在控制台并写入日志文件`output.log`,可以使用如下命令: ```bat java -jar myapp.jar | tee output.log ``` 这样可以确保输出内容既显示在控制台窗口中,也写入到指定的日志文件中。 ### 使用纯批处理和JScript混合脚本实现Tee功能 如果想依赖外部工具,可以使用一种混合脚本方式,结合Batch和JScript来实现类似`tee`的功能。这种方式需要安装额外软件,适合在受限环境中使用[^2]。 下面是一个简单的实现示例: ```bat @echo off setlocal call :Tee java -jar myapp.jar output.log goto :eof :Tee :: %* 所有参数,最后一个为日志文件名 set "logfile=%~1" shift :: 启动JScript部分 cscript //nologo //E:JScript "%~f0" %* > "%logfile%" 2>&1 | findstr /r /c:".*" exit /b :: JScript部分 @if (@CodeSection == @Batch) @then var sh = new ActiveXObject("WScript.Shell"); var args = WScript.Arguments; var cmd = ""; for (var i = 0; i < args.length; i++) { cmd += " " + args(i); } var proc = sh.Exec(cmd.trim()); while (!proc.StdOut.AtEndOfStream) { var line = proc.StdOut.ReadLine(); WScript.StdOut.WriteLine(line); } ``` 该脚本通过JScript部分读取命令输出,并将其写入日志文件,同使用`findstr`将输出内容传递给控制台显示。 ### 使用批处理中的重定向符 如果仅需将输出写入文件显示在控制台,可以使用标准的重定向操作符`>`或`>>`。但需要注意的是,这种方式无法同显示输出在控制台[^1]。 ```bat :: 覆盖写入文件 mycommand > output.log :: 追加写入文件 mycommand >> output.log ``` 若需同显示输出并写入文件,则应结合`tee`工具或使用上述混合脚本方法。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值