最近在window11 上部署一个自动化脚本,目的:通过定时任务定时重启某个java任务
脚本 push-to-start.bat
@echo off
taskkill /f /fi "WINDOWTITLE eq xxx" /t
start cmd /k "cd/d D:\qt\projects && start-node.bat"
脚本start-node.bat
::标题命名
title xxx
::启动项目
java -Dfile.encoding=UTF-8 -Xms1G -Xmx1G -jar xxx.jar --spring.profiles.active=dev
编辑好以上两个脚本,当定时任务执行 push-to-start.bat 脚本即可实现xxx的java任务重启了。但是在实践的过程中发现 taskkill /f /fi “WINDOWTITLE eq xxx” /t 这行命令不生效。
经过排查发现只有通过管理员打开cmd窗口才能正常执行 taskkill /f /fi “WINDOWTITLE eq xxx” /t 这行命令。这时,我们在启动 push-to-start.bat 脚本是就需要创建快捷方式,右键快捷方式在高级设置上选择管理员执行。但是这样启动的脚本窗口名称不叫 xxx 而是 管理员: xxx 这时候我们就要调整一下push-to-start.bat。
调整后的 push-to-start.bat
@echo off
taskkill /f /fi "WINDOWTITLE eq 管理员: xxx" /t
start cmd /k "cd/d D:\qt\projects && start-node.bat"
这里需要注意:bat脚本编码必须为ANSI编码,否则会中文乱码识别不了对应的cmd窗口。
总结:
(1) taskkill /f /fi “WINDOWTITLE eq 窗口标题” /t 这行命令需要用管理员操作才生效。
(2) 在编辑bat脚本是需要注意编码,正常情况下需要用ANSI编码,否则会中文乱码。