经常有开发人员习惯在windows上部署和开发,因此,需要编写相应windows脚本满足windows上开发和部署需求。这里提供一个window脚本可以完成在linux上常用的操作,功能是结束已有进程,并部署和启动新进程。具体脚本如下

set projectInfo=%1
set currentProjectName=%2

echo "stop SpringBoot %currentProjectName%"
FOR /F "tokens=1 delims= " %%g IN ('jps -l ^| findstr /i "%currentProjectName%" ^') DO set pid=%%g
echo "%currentProjectName% pid : %pid%"

IF NOT [%pid%]==[] IF %pid% gtr 0 (
    echo "pid != '' and pid > 0"
    taskkill /F /PID %pid%
    timeout /t 3
)
echo "stop SpringBoot %currentProjectName% over"

echo "start SpringBoot %currentProjectName%"
mkdir "C:\app\%projectInfo%"
mkdir "C:\app\%projectInfo%\logs"
start java -jar "C:\app\%projectInfo%\%currentProjectName%.jar" --spring.profiles.active=dev > "C:\app\%projectInfo%\logs\%currentProjectName%.log" 2>&1
echo "start SpringBoot %currentProjectName% success"

注意,在Windows语法中,使用set命令设置环境变量,并使用%variable%语法访问环境变量。带有tasklist和findstr命令的FOR/F循环用于提取具有给定currentProjectName的正在运行的Java进程的进程ID(PID)。start命令用于在后台启动Java进程。>和2>+1重定向运算符用于将Java进程的输出重定向到日志文件。

具体调用方法:

C:\Users\86180>D:\temp\win.bat projectpath jps

这样就能查看指定路径中生成日志文件,并由相应进程已启动。

指定进程已创建,如果想查看具体进程是否创建和相关状态可以用如下方法:

首先,你需要获取要查询的任务的 PID。可以使用命令 wmic process where "CommandLine like '%jps.jar%'" get ProcessId 命令来查找运行中的 jps.jar 进程的 PID。将 "jps.jar" 替换为你运行的 Java 程序的名称。执行该命令后,它将显示 jps.jar 进程的 PID。

例如,假设你的 jps.jar 进程的 PID 是 1234,则你可以在命令提示符中执行以下命令:

wmic process where "CommandLine like '%jps.jar%'" get ProcessId

该命令将显示 jps.jar 进程的 PID,例如 1234。

然后,按以下方式运行任务详细信息的命令:

tasklist /FI "PID eq 1234" /v

该命令将显示与 PID 1234 关联的进程的详细信息,包括名称、ID、内存使用情况、启动时间等等。