Мне нужно удалить все файлы .jpg и .txt (например) в dir1 и dir2.
Я пробовал:
@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t
В некоторых каталогах это сработало; в других - нет.
Например, это ничего не дало:
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
Что мне не хватает во втором фрагменте? Почему не сработало?
batch-file
cmd
раздражать
источник
источник
Ответы:
Вы можете использовать подстановочные знаки с
del
командой и/S
делать это рекурсивно.del /S *.jpg
Дополнение
@BmyGuest спросил, почему отклоненный ответ (
del /s c:\*.blaawbg
) отличается от моего ответа.Есть огромная разница между бегом
del /S *.jpg
иdel /S C:\*.jpg
. Первая команда выполняется из текущего местоположения , а вторая выполняется на всем диске .В сценарии, когда вы удаляете
jpg
файлы с помощью второй команды, некоторые приложения могут перестать работать, и вы потеряете все свои семейные фотографии. Это сильно раздражает, но ваш компьютер все равно сможет работать.Однако, если вы работаете над каким-то проектом и хотите удалить все свои
dll
файлыmyProject\dll
, запустите следующий командный файл:Затем вы удаляете все
dll
файлы с вашегоC:\
диска. Все ваши приложения перестают работать, ваш компьютер становится бесполезным, и при следующей перезагрузке вы телепортируетесь в четвертое измерение, где застрянете на вечность.Урок здесь не в том, чтобы запускать такую команду непосредственно в корне диска (или в любом другом месте, которое может быть опасным, например
%windir%
), если вы можете этого избежать. Всегда запускайте их как можно более локально.Приложение 2
Метод подстановочных знаков будет пытаться сопоставить все имена файлов в их формате 8.3 и их формате «длинных имен». Например,
*.dll
совпадетproject.dll
иproject.dllold
, что может удивить. См. Этот ответ на SU для получения более подробной информации.источник
pause
в конце позволит пользователю увидеть полную информацию журнала.cd
иdel
команды с `&» см stackoverflow.com/q/8055371/7429464del
команде, не меняя текущий каталог..jsx
файлы и.jsxbin
файлы в папке и я используюdel /S *.jsx
, он также удаляет.jsxbin
файлы. Размещение кавычек*.jsx
ничего не изменило. Есть ли способ заставить его удалять файлы с точно указанным расширением?Некоторое время назад я написал пакетный скрипт, который позволяет вам выбрать расширение файла для удаления. Сценарий будет искать в папке, в которой он находится, и во всех подпапках любой файл с этим расширением и удаляет его.
Надеюсь, это пригодится всем, кто этого хочет :)
источник
find . -name "*.ext" -type f -delete
подойдет простой (где ext - ваше выбранное расширение).Вы можете использовать это для удаления ВСЕХ файлов внутри папки и подпапок:
Или используйте это для удаления только определенных типов файлов:
источник
У меня недостаточно репутации, чтобы оставлять комментарии, поэтому я разместил это как ответ. Но для исходной проблемы с этой командой:
В первом For отсутствует рекурсивный синтаксис, он должен быть:
Вы можете просто сделать:
чтобы показать фактический результат.
источник
это оно:
pd: замените folder_path своей папкой
источник
Если вы пытаетесь удалить определенные расширения .extensions на диске C :, используйте этот cmd:
У меня был клиент, у которого был вирус шифрования, и мне нужно было найти все ненужные файлы и удалить их.
источник
del /s c:\*.dll
набираете текст , вас ждет очень неприятный сюрприз. Никогда не запускайте такие команды на всем диске без крайней необходимости.c:
следует заменить на желаемую папку, если человеку не нужен весь диск.