Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如果/否则和转到问题_Windows_Batch File_Cmd - Fatal编程技术网

Windows 如果/否则和转到问题

Windows 如果/否则和转到问题,windows,batch-file,cmd,Windows,Batch File,Cmd,我一直在努力拼凑这个批处理脚本来检查一个进程(它可以是任何进程)。计算正在运行的实例数,并保存该计数的输出。如果它没有运行(计数为0),那么它很好,但是如果它正在运行(1或更大),但在本例中处于“5”之下,则让它回显一条语句 @echo off for /f %%g in (' tasklist /FI "IMAGENAME eq chrome.exe" ^| find /I /C "chrome.exe" ') do ( if %%g EQU 0 goto :notrunning if %

我一直在努力拼凑这个批处理脚本来检查一个进程(它可以是任何进程)。计算正在运行的实例数,并保存该计数的输出。如果它没有运行(计数为0),那么它很好,但是如果它正在运行(1或更大),但在本例中处于“5”之下,则让它回显一条语句

@echo off

for /f %%g in (' tasklist /FI "IMAGENAME eq chrome.exe" ^| find /I /C "chrome.exe" ') do (

if %%g EQU 0 goto :notrunning
if %%g GTR 0 goto :problem
)


:notrunning
echo Program is not running
pause

:problem
If %%g LSS 5 ( echo problem
) else ( echo chrome is fine
)
pause
每次尝试这样做时,我要么得到“else”未被识别为内部或外部命令、可操作程序或批处理文件,要么当脚本遇到goto:problem时,它似乎完全忽略了else语句

@echo off

for /f %%g in (' tasklist /FI "IMAGENAME eq chrome.exe" ^| find /I /C "chrome.exe" ') do (

if %%g EQU 0 goto :notrunning
if %%g GTR 0 goto :problem
)


:notrunning
echo Program is not running
pause

:problem
If %%g LSS 5 ( echo problem
) else ( echo chrome is fine
)
pause

尽量避免在if命令中使用else语句。您正在使用的windows版本可能不支持它。尝试去掉else语句,并使用多个if语句。在这里,试试这个:

@echo off

for /f %%g in (' tasklist /FI "IMAGENAME eq chrome.exe" ^| find /I /C "chrome.exe" ') do (

if %%g EQU 0 goto :notrunning
if %%g GTR 0 goto :problem
)


:notrunning
echo Program is not running
pause

:problem
If %%g LSS 5 echo problem
If %%g GTR 4 echo chrome is fine
)
pause

任何
goto
都会中断上下文的
。试试这个:

@echo off
for /f %%g in (' tasklist /FI "IMAGENAME eq chrome.exe" ^| find /I /C "chrome.exe" ') do set status=%%g

if %status% EQU 0 goto :notrunning
if %status% GTR 0 goto :problem

:notrunning
echo Program is not running
pause

:problem
If %status% LSS 5 ( echo problem
) else ( echo chrome is fine
)
pause

当您到达标签时,
%%g
超出范围
:问题

你需要

if %%g GTR 0 set /a somevar=%%g&goto :problem