我创建了一个批处理文件,以检查计划任务是否存在以及是否不创建计划任务,但是,即使作业不存在,我的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 exist
与schtasks
一起使用,这不是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/