Windows bat 脚本编写注意
CMD 黑窗口中文乱码(一)
- 使用 chcp 65001 修改当前黑窗口编码为 UTF-8;
- 在启动参数中增加 -Dfile.encoding=utf-8 参数。
shell
@echo off
chcp 65001 > nul
java -Dfile.encoding=utf-8 -jar your_app.jar
pause
65001
表示 UTF-8编码。936
表示 GBK 编码。CMD 窗口默认为 GBK 编码。chcp 65001
修改编码为 UTF-8。chcp 936
可恢复为默认的 GBK 编码。pause
防止窗口闪退。
CMD 黑窗口中文乱码(二)
记事本打开 .bat 文件,选择【文件】-【另存为】然后下面的编码选择:ANSI,然后保存即可。
切换并进入运行目录到脚本所在的目录
bash
cd /d %~dp0
# 关于 cd 的 /d 参数,在cmd中敲入cd /? ,可以看到 /d 参数的解释如下:
# 使用 /D 命令行开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。
# 关于 %~dp0 的批处理命令的详细解释:
# %~dp0 “d” 为 Drive 的缩写,即为驱动器,磁盘、“p” 为Path缩写,即为路径,目录。
# 选项语法:
# ~0 - 删除任何引号("),扩充%0,
# %~d0 - 仅将%0扩充到一个驱动器号,
# %~p0 - 仅将%0扩充到一个路径。
设置 JAVA_HOME 和 Path
bash
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_251
set Path=%JAVA_HOME%\bin;%Path%
# 或者简单的方式如下:
set Path=C:\Program Files\Java\jdk1.8.0_251\bin;%Path%
# 设置 CLASSPATH
set CLASSPATH=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;ar;lib/run.jar
# 然后脚本默认就是使用上面设置的 JAVA_HOME 来启动 jar 应用了,比如下面这样:
# java -jar vitality-admin.jar
启动 java 示例脚本
bash
rem 使用者应根据自身平台编码自行转换 防止乱码 例如 win使用gbk编码
@echo off
title=Vitality-Admin
echo 启动倒计时:
timeout /T 10 /NOBREAK
rem jar平级目录
set AppName=vitality-admin.jar
rem JVM参数
set JVM_OPTS="-Dname=%AppName% -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai -Xms1024m -Xmx4096m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
set pid=%%a
set image_name=%%b
)
if defined pid (
echo %%is running
PAUSE
)
echo starting……
java %JVM_OPTS% -jar %AppName%
PAUSE