удалите все файлы определенного типа рекурсивно вниз по каталогу с помощью пакетного файла


хорошо, я знаю, что многие люди могли бы спросить об этом, но я просто не могу найти свой ответ. То, что я хочу сделать, это то, что я хочу удалить все .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:UsersvexePicturessample) DO FOR %%t IN (*.jpg) DO del /s %%p%%t

не могли бы вы помочь мне здесь, я новичок в написании пакетных файлов, это правильный способ сделать это? если нет, то каков правильный путь? если это так,то что я пропустил во втором фрагменте? почему это не сработало? thnx за любые советы :)

3 58

3 ответа:

вы можете использовать подстановочные знаки с и /S сделать это рекурсивно.

del /S *.jpg

дополнительное соглашение

@BmyGuest спросил, почему пониженный ответ (del /s c:\*.blaawbg) ничем не отличался от моего ответа.

здесь огромный разницу между управлением del /S *.jpg и del /S C:\*.jpg. Первая команда выполняется из текущего местоположения, тогда как второй выполняется в целом драйв.

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

однако если вы работаете над каким-то проектом, и хотите удалить все dll файлы myProject\dll, и запустите следующий пакетный файл:

@echo off

REM This short script will only remove dlls from my project... or will it?

cd \myProject\dll
del /S /Q C:\*.dll

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

урок здесь заключается в том, чтобы не запускать такую команду непосредственно в корне диска (или в любом другом месте, которое может быть опасным, например %windir%) если вы можете избежать его. Всегда запускайте их как можно локальнее.

Я написал пакетный скрипт некоторое время назад, что позволяет выбрать расширение файла, который нужно удалить. Скрипт будет искать в папке, в которой он находится, и все подпапки для любого файла с этим расширением и удалять его.

@ECHO OFF
CLS

SET found=0
ECHO Enter the file extension you want to delete...
SET /p ext="> "

IF EXIST *.%ext% (           rem Check if there are any in the current folder :)
  DEL *.%ext%
  SET found=1
)
FOR /D /R %%G IN ("*") DO (  rem Iterate through all subfolders
  IF EXIST %%G CD %%G
  IF EXIST *.%ext% (
    DEL *.%ext%
    SET found=1
  )
)

IF %found%==1 (
  ECHO.
  ECHO Deleted all .%ext% files.
  ECHO.
) ELSE (
  ECHO.
  ECHO There were no .%ext% files.
  ECHO Nothing has been deleted.
  ECHO.
)

PAUSE
EXIT

надеюсь, что это пригодится всем, кто этого хочет:)

Если вы пытаетесь удалить .расширения в диске C: используйте этот cmd:

del /s c:\*.blaawbg

У меня был клиент, который получил вирус, шифрование и мне нужно найти все ненужные файлы и удалить их.