我创建了一个批处理文件来检查是否存在计划任务,如果它们没有创建它们,但是,即使作业不存在,我的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
elzooilogico.. 13
您不能使用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
因为我们只想测试失败,所以只使用||
(上一个命令失败).
您不能使用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
因为我们只想测试失败,所以只使用||
(上一个命令失败).