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 exist与schtasks,这不是目的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
因为我们只想测试失败,所以只使用||(上一个命令失败).