如何写一个 bat 文件启动 jar 包

本文介绍了如何编写一个.bat文件来启动Java的jar包,并着重解决了在CMD中运行jar包时可能出现的中文乱码问题。通过设置CMD编码为UTF-8(chcp 65001)以及调整Java的字符编码,确保输出的日志正确显示中文。同时,文章还提及了.bat脚本中的关键命令如echo、start、wait、timeout、if和goto的使用,以及如何利用这些命令实现类似while循环的功能。

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

先给一个示例

@echo off
chcp 65001
set i=3
:restart
start /b /wait ./jre_1.8_32/bin/java -Dloader.path=./lib -Xmx256m -Xms128m -Dfile.encoding=utf-8 -jar client.jar
echo "遇到错误停止运转10秒后自动重启"
timeout /t 10
if %i% GTR 0 (
    set /a i = %i% - 1
    goto restart
)
pause

  1. @echo off

echo 表示将内容输出到窗口
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。

  1. chcp 65001

启动 jar 包后输出日志时,中文会乱码
Java代码中统一编码为UTF8,打包成Jar通过CMD运行,都会出现中文字符串为GBK问题。根源——cmd/bash默认的编码是GBK。
打开cmd,输入以下命令:chcp 65001 更改cmd的编码为UTF-8
image.png
最好也要规定执行java时的编码方式,把jvm的读写文件、也就是流的编码设置为utf-8。这样输出输入显示都是utf-8:

java -Dfile.encoding=utf-8 -jar XXX.jar

参考:https://blog.youkuaiyun.com/ztx01001/article/details/106072879

  1. start 命令

/b 应⽤程序时不必打开新的“命令提⽰符”窗⼝。
/wait 启动应⽤程序,并等待其结束。

  1. timeout /t 10

带倒计时提示信息休眠 10 秒

  1. %i%

使用 %i%,取出 i 的值
set i=3给变量 i 赋值 3
set /a执行数学计算
数值的比较:比较参数如下:
EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于

  1. goto

**.**bat 中没有 while 语句,可以使用 if 加 goto 来替代

goto 命令 跳转的意思,用 :XX 构筑一个标记,用 goto XX跳转到XX标记处。

  1. pause

暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行

.bat 学习网址:

  1. BAT 教程&资料:http://www.bathome.net/forumdisplay.php?fid=33
  2. BAT 命令常用 API:https://www.youkuaiyun.com/tags/NtzaMg3sMDcxNTEtYmxvZwO0O0OO0O0O.html
  3. BAT 基础知识 — 主要是 start 命令的详细用法:https://wenku.baidu.com/view/b02ffc4c551252d380eb6294dd88d0d233d43cbd.html
  4. bat 脚本的几种休眠方式:https://chenxuehu.com/article/2020/06/7603.html
  5. bat 启动 jar 包导致中文编码为 GBK:https://blog.youkuaiyun.com/ztx01001/article/details/106072879
  6. bat 批处理启动 jar:https://www.youkuaiyun.com/tags/MtTaMgysNjk1NzI4LWJsb2cO0O0O.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值