11

Удаление элементов через командную строку довольно просто.

del /options filename.extension

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

Дело в том, что у меня есть часть программного обеспечения, которая конвертирует все указанные изображения в .jpg, но оставляет оригиналы, которые мне больше не нужны.

Было бы намного эффективнее выполнить один оператор, чем делать несколько операторов для каждого отдельного типа файла.

6 ответов6

13

Я бы сделал это так:

attrib +r *.jpg
del /q *
attrib -r *.jpg

Это сначала сделает все файлы JPG доступными только для чтения, удалит все остальное (автоматически пропустит файлы только для чтения), а затем снова сделает файлы JPG доступными для записи.

9

Это на самом деле довольно легко.

Вам нужно for перебора файлов , а затем просто искать расширение:

for %f in (*) do if not %~xf==.jpg del "%f"

должен сделать трюк (код здесь).

1

Powershell на помощь
Во времена Windows 7/8 это преемник старой доброй командной строки

Del C:\myFolder\* -exclude '*.jpg'

Del является псевдонимом для Remove-Item. У него есть несколько опций, таких как recurse, include, exclude и filter (используйте это для RegEx)

Вы должны добавить \* чтобы включить файлы в заданную папку

1

Я знаю, что он не отвечает на ваш вопрос напрямую, но вы посмотрели на параметры вашего конвертера, чтобы увидеть, если:

  1. Он может удалить оригиналы сам

или же

  1. Написать .jpg в новую папку?
0

Другой способ удалить все файлы, соответствующие имени файла, показан ниже. Список циклов for содержит все файлы, а if NOT соответствует имени файла (без имени каталога).

for /r %f in (*) do if not %~nxf == abc.xml del "%f"
0

Я искал способ найти все файлы, которые НЕ имеют расширения ".mp3", в каталоге TREE в Windows 7 (том NTFS), содержащем, возможно, 20 000 файлов в нескольких сотнях каталогов различной глубины ... так что после небольшого количества я использовал:

cd <theplace>
dir /S | find /V "<DIR>" | find /V "Total" | find /V "bytes" | find /V "Directory" | find /V "Volume" | find /V ".mp3" | more /S

в нем перечислены файлы, которые не соответствуют .mp3 после удаления всего, что связано с выводом команды DIR ... 99% работает ... если файл, который не соответствует, не назван одним из ключевых слов в стандартном выводе DIR - возможно, есть способ сделать отчет DIR меньшим количеством заголовка / сводной информации - но я не стал беспокоиться, так как он получил большую часть пути.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .