WINDOWS bat脚本业务需求:1,查看/path/to/PID.pid文件是否存在 2,上一步文件如果存在,判断该文件是否有值,如果有进程号,则提取该进程号 3,根据该进程号,正常结束该进程。 4,如果正常结束该进程报错,则强制结束该进程,并删除/path/to/PID.pid文件, 5,如果没有进程号,则结束该脚本。 6,在第一步检查时,没有/path/to/PID.pid文件,则直接运行Test.jar程序。
时间: 2024-03-23 17:42:27 浏览: 43
可以尝试以下的bat脚本实现你的业务需求:
```
@echo off
set pid_file=/path/to/PID.pid
if exist %pid_file% (
set /p pid=<%pid_file%
if defined pid (
taskkill /PID %pid% /f
if %errorlevel% neq 0 (
taskkill /IM Test.jar /f
del %pid_file%
)
) else (
exit
)
) else (
start Test.jar
)
```
上述脚本首先检查PID文件是否存在,如果存在则读取其中的进程号,如果存在进程号则使用taskkill命令结束该进程,如果结束失败则强制结束Test.jar进程并删除PID文件。如果PID文件中不存在进程号,则直接结束脚本。如果PID文件不存在,则启动Test.jar程序。
相关问题
bat脚本修改环境变量后立即生效
在 Windows 操作系统中,修改环境变量后需要重新打开命令行窗口或者重新启动计算机才能使修改生效。如果想要在不重启计算机或者重新打开命令行窗口的情况下立即生效,可以使用以下方法:
1. 在 bat 脚本中使用 `setx` 命令修改环境变量,并且在修改后使用 `set` 命令强制更新当前窗口的环境变量,示例代码如下:
```
setx PATH "%PATH%;C:\NewFolder" /M
set PATH=%PATH%
```
其中,`setx` 命令用于修改系统环境变量 PATH,`/M` 参数表示修改的是系统级别的环境变量。`set` 命令用于强制更新当前窗口的环境变量,将新的环境变量值同步到当前窗口的进程中。
2. 在 bat 脚本中使用 `setx` 命令修改环境变量后,使用 `SendMessage` API 发送消息给 Windows Explorer 进程,通知它更新环境变量。示例代码如下:
```
setx PATH "%PATH%;C:\NewFolder" /M
setlocal EnableDelayedExpansion
set "msg=!WM_SETTINGCHANGE!"
set "explorer=%SystemRoot%\explorer.exe"
set "param=/select,explorer.exe"
set "param=!param:\=\\!"
set "param=!param:,=\,! /e,!param:~0,-1!!"
if defined PROCESSOR_ARCHITEW6432 (
set "pids="
for /f "usebackq tokens=2 delims==;" %%i in (`tasklist /fi "imagename eq explorer.exe" /fi "memusage gt 50000" /fo list /v`) do (
set "pids=!pids! %%i"
)
if defined pids (
echo ^<%time%^> Killing processes !pids:~1! to force Explorer restart...
taskkill /pid !pids:~1! /f >nul 2>&1
)
) else (
for /f "usebackq tokens=2 delims==;" %%i in (`tasklist /fi "imagename eq explorer.exe" /fi "memusage gt 25000" /fo list /v`) do (
set "explorer=%%i"
)
)
echo ^<%time%^> Spawning Explorer process %explorer% %param%...
start "" "%explorer%" %param%
endlocal
```
其中,`setx` 命令用于修改系统环境变量 PATH,`/M` 参数表示修改的是系统级别的环境变量。`SendMessage` API 用于向 Windows Explorer 进程发送消息,通知它更新环境变量。在代码中,使用了一些技巧来找到 Windows Explorer 进程的 PID,并且使用 `taskkill` 命令杀掉这些进程,然后使用 `start` 命令启动一个新的 Windows Explorer 进程,并且带上指定的参数。这样就可以在不重启计算机或者重新打开命令行窗口的情况下立即生效修改的环境变量。
写个bat脚本,先调spring boot打的jar包里的某个接口 调完后停止项目
你可以创建一个简单的批处理脚本(BAT文件),使用`java -jar`命令启动Spring Boot应用,并通过`curl`或者`httpie`之类的工具调用指定接口。调用完毕后,使用`taskkill`命令关闭应用。下面是一个基本的示例:
```batch
@echo off
REM 设置Spring Boot应用的JAR路径
set JAR_PATH=path_to_your_spring_boot_jar.jar
REM 指定要调用的接口URL
set API_URL=http://localhost:8080/api/your_endpoint
REM 使用java -jar "%JAR_PATH%" &
ping localhost -n 5 > nul &
REM 等待5秒让应用启动完成并允许接口响应
timeout /t 5
REM 使用curl调用接口(假设你的接口需要HTTP GET请求)
curl -X GET "%API_URL%"
REM 确认接口调用成功,然后停止Spring Boot应用
if errorlevel 0 (
echo "接口调用成功,现在停止应用..."
) else (
echo "接口调用失败,请检查网络或接口是否可用。"
)
REM 优雅地杀死进程(如果应用程序支持stop命令,这里可以替换为对应命令)
taskkill /F /PID %窗口ID% 2>NUL
pause
```
在这个脚本中,你需要将`path_to_your_spring_boot_jar.jar`替换为你实际的Spring Boot JAR文件路径,以及`http://localhost:8080/api/your_endpoint`替换为你的接口URL。
注意:这个脚本假定你的Spring Boot应用监听的是默认的8080端口,并且支持通过`java -jar`直接运行。如果你的应用有不同的启动选项或使用了其他服务管理器,请相应调整。
阅读全文