batch-file - 如果存在计划任务

标签 batch-file cmd windows-task-scheduler

我创建了一个批处理文件,以检查计划任务是否存在以及是否不创建计划任务,但是,即使作业不存在,我的if if规则似乎总是正确。

有任何想法吗?

::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 

最佳答案

您不能将if existschtasks一起使用,这不是if exist的目的。

使用之一

schtasks /query /TN "task_name" >NUL 2>&1 || schTasks /Create /SC DAILY /TN "task_name" ...

或者
schtasks /query /TN "task_name" >NUL 2>&1
if %errorlevel% NEQ 0 schTasks /Create /SC DAILY /TN "task_name" ...
>NUL 2>&1抑制成功或错误输出,但是如果成功,我们将errorlevel设置为0,如果失败,则不设置0

两者都差不多。在第一种情况下,我们使用cmd &&||运算符,其中&&表示上一个命令成功,而||表示上一个命令失败。


mycommand && echo success || echo error
因为我们只想测试失败,所以仅使用||(先前的命令失败)。

关于batch-file - 如果存在计划任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570227/

相关文章:

bash - 如何将 “escape hell”传递给docker run

java - 为什么schtasks无法识别XML语法?

c# - .Net 应用程序的 Windows 任务计划程序与 Windows 服务

windows - 在交互式 session 中启动 Windows 服务

无法退出 cmd 文本输入?

batch-file - 批处理文件编码问题

windows - 输出未重定向到Windows任务内的文件

xml - 需要自动化脚本以在 XML 文件中搜索并将 HEX 替换为 DEC

windows - 批量编码,然后将文件大小与原始文件大小进行比较并删除更大的文件

batch-file - findstr 输出到文件中的问题