удалите все файлы определенного типа рекурсивно вниз по каталогу с помощью пакетного файла
хорошо, я знаю, что многие люди могли бы спросить об этом, но я просто не могу найти свой ответ. То, что я хочу сделать, это то, что я хочу удалить все .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 ответа:
вы можете использовать подстановочные знаки с и
/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
надеюсь, что это пригодится всем, кто этого хочет:)