Если заявление для ForFiles на основе даты файла - PullRequest
0 голосов
/ 25 марта 2019

У меня есть пакетный файл, который я вызываю через агент сервера SQL.

В настоящее время у меня есть:

ForFiles /p "C:\folder\subfolder" /d -7 /c "cmd /c del @file"

Команда работает нормально, если файл старше 7 дней.

Если нет файла, который соответствует критериям, сценарий завершается ошибкой, в результате чего SQL сообщает об ошибке.

В идеале мне нужно добавить оператор if, если файл существует старше 7 дней, а затем выполнить команду удаления, иначе проигнорировать его.

Любое руководство?

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Оберните его внутри команды FOR /F, чтобы перенаправить стандартную ошибку в NUL.

FOR /F "delims=" %%G IN ('forfiles /P "C:\folder\subfolder" /d -7  2^>nul') do DEL "%%~G"
0 голосов
/ 25 марта 2019

Попробуйте это:

cd /d C:\folder\subfolder
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles -p "C:\folder\subfolder" -s -m *.* -d -7 -c "cmd /c del @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 
    SET errorlevel=0 
 ) ELSE ( 
    SET errorlevel=1
 )
IF "%_CmdResult%" == "NONE" SET errorlevel=0

проверяет наличие ошибки и помещает ошибку в переменную, а затем мы устанавливаем уровень ошибки равным нулю, если он найден.

...