Как удалить все файлы НЕ определенного типа в командном файле - PullRequest
1 голос
/ 14 мая 2009

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

Как я могу это сделать?

Ответы [ 7 ]

2 голосов
/ 18 марта 2011

Я написал этот пакетный файл после того, как коллега попросил помочь ему удалить все файлы, КРОМЕ для файлов определенных типов из папки и всех подпапок, при сохранении структуры каталогов. Я бы порекомендовал сделать резервную копию вашей папки, прежде чем пытаться это сделать. Просто откройте блокнот и вставьте следующее, сохраните его как .bat вместо .txt Удачи! ~ Кэролин

REM Use at your own risk, it does a mass DELETE of everything!

SET /p ExcludeFiles=What file type should be kept (NOT deleted)? Type the file name(s) inside parantheses. example: (pdf) or (shp dbf shx)     
SET /p MapDrive=What drive letter is the folder in? example: c or n     
SET /p Directory=Drag the folder you would like to modify into this command prompt then press ENTER.     

%MapDrive%:
cd %Directory%

attrib +a *.* /s
echo %date%
for %%i in %ExcludeFiles% do attrib -a *.%%i /s
echo %date%
del %Directory%\*.* /s /a:a /q

echo %date%
attrib +a %Directory%\*.* /s
echo %date%
1 голос
/ 25 августа 2009

Я использую решение, найденное здесь: Как я могу удалить все файлы / подкаталоги, кроме некоторых файлов в DOS?

попробуй:)

1 голос
/ 14 мая 2009

Самый безопасный способ - скопировать все нужные файлы и удалить остальные.
XCOPY * .java c: \ new_directory / s

Подкаталоги копий / s

1 голос
/ 14 мая 2009

Вы можете попробовать что-то вроде

for /f "usebackq delims=" %i in (`dir /s /b *`) do if not %~xi==.txt del %i

По вашему вопросу в комментарии вы можете попробовать следующее:

robocopy source_folder target_folder *.java /s

или

xcopy *.java target_folder /s

, которая сохраняет структуру каталогов, но копирует только .java файлов.

0 голосов
/ 03 апреля 2013
FORFILES /s /p c:\dir /c "if not @ext==.txt del /f @file"
0 голосов
/ 01 февраля 2012

Вы можете попробовать это:

ECHO DIR %address% /S /B | FIND /C %theType%>temptemp.txt
FOR /f %%a IN (temptemp.txt) DO DEL %%a
DEL temptemp.txt

Переменная address является каталогом, а переменная theType является типом, который вы не хотите удалять.

0 голосов
/ 14 мая 2009

Попробуйте исследовать здесь .

Хотя это не дает вам именно то, что вы просите, я бы сказал, что это хорошая отправная точка.

...