Windows bat脚本启动Jar包
如果中文路径乱码,文件另存为保存为ANSI则可以。
设置参考
port: 如果你使用其他端口,需要将其替换为你要使用的端口号。 java_exe: 如果你的 Java 可执行文件不在 C:Program FilesJavajdk-11.0.2injava.exe 这个路径下,请将其替换为实际的路径。 jar_path: 如果 admin.jar 不在批处理脚本的同一目录下,请将其替换为实际的路径
脚本1
以下是一个修改后的脚本,可以在运行 Java 项目时关闭当前窗口 admin.jar 为执行java名称
不指定java版本
@echo off
setlocal enabledelayedexpansion
set port=8080
set jar_path=%~dp0admin.jar
:: Check if the port is already in use
for /f "tokens=5" %%a in (netstat -ano ^| findstr :%port%) do (
taskkill /f /pid %%a >nul
)
:: Start the Java project and display output in a new window
start cmd /c java -jar "%jar_path%"
exit
这里将启动 Java 项目的命令中的 cmd /k 改为了 cmd /c,这样在项目运行结束后会自动关闭当前窗口。
另外,如果你想要让脚本执行完毕后等待一段时间再自动关闭窗口,可以在最后加上 ping -n 3 127.0.0.1 > nul,其中 3 表示等待的秒数
脚本2
以下是一个修改后的脚本,可以在当前文件夹下查找并启动任何以 .jar 结尾的文件
@echo off
setlocal enabledelayedexpansion
set port=8080
set jar_path=
:: Search for .jar files in current directory
for %%i in (*.jar) do (
set jar_path=%%i
goto found_jar
)
:found_jar
if not defined jar_path (
echo No .jar file found in current directory!
pause
exit
)
:: Check if the port is already in use
for /f "tokens=5" %%a in (netstat -ano ^| findstr :%port%) do (
taskkill /f /pid %%a >nul
)
:: Start the Java project and display output in a new window
start cmd /c java -jar "%jar_path%"
exit
这里使用 for 命令遍历当前目录下所有以 .jar 结尾的文件,将第一个找到的文件名赋值给 jar_path 变量。如果没有找到任何 .jar 文件,则会输出一条错误信息并等待用户按下任意键退出。然后,脚本会检查 8080 端口是否被占用,并启动找到的 .jar 文件。
脚本3
如果在脚本中使用start命令来启动新的cmd窗口,那么要想在新打开的cmd窗口中设置标题,需要在start命令之前先加上title命令,例如:添加cloud-dev
@echo off
setlocal enabledelayedexpansion
set port=8080
set jar_path=
:: Search for .jar files in current directory
for %%i in (*.jar) do (
set jar_path=%%i
goto found_jar
)
:found_jar
if not defined jar_path (
echo No .jar file found in current directory!
pause
exit
)
:: Check if the port is already in use
for /f "tokens=5" %%a in (netstat -ano ^| findstr :%port%) do (
taskkill /f /pid %%a >nul
)
:: Start the Java project and display output in a new window with custom title
start "cloud-dev" cmd /c java -jar "%jar_path%" --spring.profiles.active=dev
exit
