Ошибка Ther исходит от forfiles
, когда он выполняется в каталоге без содержимого (без файлов и без каталогов). Помните, что forfiles
ищет текущий рабочий каталог, если ни один путь не указан явно с помощью переключателя /P
, а маска поиска по умолчанию равна *
, если переключатель /M
не указан, поэтому соответствует всем элементам. Таким образом, ошибка, с которой вы сталкиваетесь, может произойти только с пустым рабочим каталогом.
Ошибка не имеет ничего общего с запросом if @isdir==TRUE
.
Если вы хотите конкретное сообщение, чтобы появиться в журнале, вы можете проверить ErrorLevel
состояния после того, как forfiles
была выполнена, что 1
в случае никаких пунктов не соответствуют критериям поиска, и 0
, если хотя бы один элемент соответствует:
forfiles /S /C "cmd /C if @isdir==TRUE rmdir @file" || echo "%CD%" is empty. >> "C:\Apps\%dt%\%dt%.log" 2> nul
Об этом пишет сообщение "%CD%" is empty
в журнал с %CD%
заменяется текущей директории.
2> nul
подавляет сообщение об ошибке ERROR: The system cannot find the file specified.
.
Оператор ||
условно объединяет команды и позволяет выполнять только один, только если левый успешно завершен, что означает, что ErrorLevel
- 0
.
спасибо @aschipfl! – sharcfinz