如果存在计划任务

Tom*_*Tom 5 cmd batch-file schtasks.exe

我创建了一个批处理文件来检查是否存在计划任务,如果它们没有创建它们,但是,即使作业不存在,我的if exists规则似乎也总是如此.

有任何想法吗?

::Check Rule
IF EXIST SchTasks /QUERY /TN "Cache Task Morning"  ( 
    echo ! Morning rule in place!
    GOTO NEXT 
) ELSE IF NOT EXIST SchTasks /Create /SC DAILY /TN "Cache Task Morning" /TR "C:\Cache Clear\Cache Clear.bat" /ST 09:00 

:NEXT
IF EXIST SchTasks /QUERY /TN "Cache Task Afternoon"  ( 
    echo ! Afternoon rule in place!
    GOTO NEXT TWO
) ELSE IF NOT EXIST SchTasks /Create /SC DAILY /TN "Cache Task Afternoon" /TR "C:\Cache Clear\Cache Clear.bat" /ST 15:00 

:NEXT TWO
IF EXIST SchTasks  /QUERY /TN "Cache Task Evening"  ( 
    echo ! Evening rule in place!
    GOTO CLEAR CACHE 
) ELSE IF NOT EXIST SchTasks /Create /SC DAILY /TN "Cache Task Evening" /TR "C:\Cache Clear\Cache Clear.bat" /ST 18:00 
Run Code Online (Sandbox Code Playgroud)

elz*_*ico 13

您不能使用if existschtasks,这不是目的if exist.

使用其中之一

schtasks /query /TN "task_name" >NUL 2>&1 || schTasks /Create /SC DAILY /TN "task_name" ...
Run Code Online (Sandbox Code Playgroud)

要么

schtasks /query /TN "task_name" >NUL 2>&1
if %errorlevel% NEQ 0 schTasks /Create /SC DAILY /TN "task_name" ...
Run Code Online (Sandbox Code Playgroud)

>NUL 2>&1抑制成功或错误输出,但我们已errorlevel设置0成功,0如果失败.

两者都很相似.在第一种情况下,我们使用cmd &&||运算符,这&&意味着上一个命令成功,||意味着前一个命令失败.

如在

mycommand && echo success || echo error

因为我们只想测试失败,所以只使用||(上一个命令失败).