Ваш код нуждается в нескольких исправлениях. Оператор канала должен быть экранирован символом пакетного перехода ^
и при использовании кавычек в скобках для команды должна быть указана опция usebackq
.
for /?
Пакетный формат:
for /f "usebackq" %%i in (`dir /s /b ^| find "lock"`) do echo %%i
Формат командной строки:
for /f "usebackq" %i in (`dir /s /b ^| find "lock"`) do echo %i
Замените echo
на del
и любой из его параметров, когда вы хотите, чтобы он действительно удалил файлы. Обратите внимание, что двойные знаки процента необходимы при использовании в файле bat, одиночные при использовании непосредственно в командной строке.
Другой способ - использовать команду forfiles
. forfiles /?
forfiles /m *lock* /s /c "cmd /c echo @file"
Обратите внимание, что оба эти метода также удаляют любые папки, содержащие lock
поискового запроса. Для предотвращения этого потребуются дополнительные шаги.