[英]How to check if a batch file runs and avoid a dual execute?
我想制作一个批处理脚本,但我想避免双重执行。 所以我试图检查它是否正在运行。
我使用了以下方法,但我ERROR: The process "MyBatchTool" not found
此ERROR: The process "MyBatchTool" not found
消息ERROR: The process "MyBatchTool" not found
echo off
TITLE MyBatchTool
SETLOCAL ENABLEDELAYEDEXPANSION
tasklist /fi "imagename eq MyBatchTool" |find ":" > nul
if errorlevel 1 echo "Is Running"
pause
你有什么建议吗 ?
echo off
TITLE MyBatchTool
SETLOCAL ENABLEDELAYEDEXPANSION
tasklist /fi "imagename eq MyBatchTool" 2>nul |find ":" > nul 2>nul && (
echo "Is not Running"
color
)||(
echo "Is running"
)
pause
您可以使用文件锁,即使出现错误,批处理文件退出时,该锁也会被删除。
而且只有一个进程可以持有该锁,这是安全的。
2> nul (
9> lock.tmp 2>&1 (
call :main
) || ( echo Is still runiing )
)
exit /b
:main
echo This will only run in one instance
ping -n 10 localhost
第一部分是用于创建排他锁文件。 当您尝试再次运行批处理时, 2>nul
阻止错误消息。
有关更多示例和描述,您可以在SO或dostips.com上搜索dbenham关于该主题的帖子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.