Skip to content

Windows bat 脚本编写注意

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_202
set Path=%JAVA_HOME%\bin

# 设置 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