我不明白如何在批处理脚本中存在任务?
I don't Understand how to exist task in batch script?
我创建了一个名为 CHECKPRODUCT.CMD 的文件。但是我有另一个在启动时运行的文件,它被命名为 ACTIVATED.cmd。但我不明白如何在 CHECKPRODUCT.cmd 中存在任务 ACTIVATED.cmd。就像我试过这个例子:
if tasklist == "ACTIVATED.cmd" (
goto :1 ) else (
goto :2 )
但是,它不起作用!
有人可以帮我吗??我需要帮助。真的!
非常感谢!
如果我对你的问题的理解正确,那么你正在尝试确定另一个批处理文件是否仍然 运行 来自另一个。
您可以通过使用 WMI 命令行实用程序检查 运行 cmd.exe 进程的命令行字符串来做到这一点。
@Echo Off
SetLocal EnableExtensions
Set "ScriptName=ACTIVATED.cmd"
%SystemRoot%\System32\wbem\WMIC.exe Process Where^
"Name='cmd.exe' And CommandLine Like '%%%ScriptName:_=[_]%%%'"^
Get ProcessId /Value 2>NUL | %SystemRoot%\System32\find.exe "=" 1>NUL^
|| GoTo :2
:1
Echo %ScriptName% is running.
Pause
GoTo :EOF
:2
Echo %ScriptName% is not running.
Pause
注意:虽然您可以在行 4
上自由修改脚本名称,但请注意,如果您决定使用包含 [
、]
、^
或 %
个字符。
您可以使用任务列表来检查任务的许多方面 运行 正是出于这个原因,OLD 学校培训为您的 bat 文件命名。
首先始终确保(我经常忘记)在可能不会快速退出的 bat 或 cmd 中使用标题,它对任务列表很有用,有时 taskkill /t 或如果使用 /F 则被认为是坏的。尝试使用唯一的名称,否则编辑 activate.cmd 会出现在记事本 and cmd
中
@echo off & title ACTIVATED
echo Running Activated
pause
您可以使用“运行”以外的其他状态测试,请参阅 tasklist /?
tasklist /FI "WindowTitle eq ACTIVATED" /FI "STATUS eq running" | Find /i "cmd"
REM bad find=2 not found=1 found at least once=0
if %errorlevel% == 0 (
echo true) else (
echo false)
pause
如果您想测试多个条目等,您可能需要使用 ....ACTIVATED*"
我创建了一个名为 CHECKPRODUCT.CMD 的文件。但是我有另一个在启动时运行的文件,它被命名为 ACTIVATED.cmd。但我不明白如何在 CHECKPRODUCT.cmd 中存在任务 ACTIVATED.cmd。就像我试过这个例子:
if tasklist == "ACTIVATED.cmd" (
goto :1 ) else (
goto :2 )
但是,它不起作用!
有人可以帮我吗??我需要帮助。真的! 非常感谢!
如果我对你的问题的理解正确,那么你正在尝试确定另一个批处理文件是否仍然 运行 来自另一个。
您可以通过使用 WMI 命令行实用程序检查 运行 cmd.exe 进程的命令行字符串来做到这一点。
@Echo Off
SetLocal EnableExtensions
Set "ScriptName=ACTIVATED.cmd"
%SystemRoot%\System32\wbem\WMIC.exe Process Where^
"Name='cmd.exe' And CommandLine Like '%%%ScriptName:_=[_]%%%'"^
Get ProcessId /Value 2>NUL | %SystemRoot%\System32\find.exe "=" 1>NUL^
|| GoTo :2
:1
Echo %ScriptName% is running.
Pause
GoTo :EOF
:2
Echo %ScriptName% is not running.
Pause
注意:虽然您可以在行 4
上自由修改脚本名称,但请注意,如果您决定使用包含 [
、]
、^
或 %
个字符。
您可以使用任务列表来检查任务的许多方面 运行 正是出于这个原因,OLD 学校培训为您的 bat 文件命名。
首先始终确保(我经常忘记)在可能不会快速退出的 bat 或 cmd 中使用标题,它对任务列表很有用,有时 taskkill /t 或如果使用 /F 则被认为是坏的。尝试使用唯一的名称,否则编辑 activate.cmd 会出现在记事本 and cmd
中@echo off & title ACTIVATED
echo Running Activated
pause
您可以使用“运行”以外的其他状态测试,请参阅 tasklist /?
tasklist /FI "WindowTitle eq ACTIVATED" /FI "STATUS eq running" | Find /i "cmd"
REM bad find=2 not found=1 found at least once=0
if %errorlevel% == 0 (
echo true) else (
echo false)
pause
如果您想测试多个条目等,您可能需要使用 ....ACTIVATED*"