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

-1

Я хочу найти и удалить * .mp4 * .mpeg, * .mkv, * .flv, * .avi (все видеофайлы) со всех дисков (C, D, E, F) или из любого места на моем компьютере в любом каталоге или подкаталог, используя BATCH File. Моя операционная система - Windows XP.

Vinayak Shinde
источник
Хм, я собрал пакетный файл, и он работал в один момент, но когда я немного его почистил, он перестал работать. Я отменил изменения, которые я сделал после того, как он заработал, и отменил его до того уровня, на котором он работал ранее, но он все равно не сработал. ಠ_ ఠ Глупые компьютеры с их прерывистым, неопределенным поведением. ¬_¬ Я постараюсь это исправить ...
Synetech

Ответы:

1

for %%drive in (C D E F) do (
    for /R %drive:\ %%f in (*.mp4 *.mpeg *.mkv *.flv *.avi) do (
        @echo del "%f"
    )
)

( Документация )

У меня нет средств проверить это прямо сейчас. Просто запустите его и посмотрите, все ли правильно. После этого удалите @echo и запустите его снова.

David Foerster
источник
Привет, Дэвид, спасибо за ваш ответ, я пытаюсь использовать эту команду, используя командный файл, но ничего не происходит. Пакетный файл запустился, но не дал никакого результата. У меня ОС MS Windows XP Prof.2002 SP3.
Vinayak Shinde
Не могли бы вы воспроизвести сообщение об ошибке, пожалуйста? Я написал свой последний нетривиальный пакетный скрипт несколько лет назад и, скорее всего, включил в себя какой-то неверный синтаксис.
David Foerster
Привет, Дэвид! После запуска командного файла на нем не отображается никаких ошибок. Его только открывать и закрывать в доли секунды. Поэтому я также не могу понять ошибку.
Vinayak Shinde
Вам нужно открыть окно командной строки ( Windows + R , войти cmd.exe и нажмите Вернуть или нажмите OK) и выполните оттуда командный файл или последовательность команд. После этого он останется открытым.
David Foerster
«% диск был неожиданным в это время», это ошибка, и после этого команда выполняется без ошибок, но файлы не удаляются.
Vinayak Shinde
1

Прежде всего, может быть довольно опасно слепо удалять файлы с помощью командного файла, потому что это уничтожит все и вся. И хотя это, по-видимому, ваша цель, вы должны знать, что это также приведет к уничтожению файлов, которые являются частью операционной системы (Windows поставляется с несколькими видео здесь и там), а также любых программ и игр, имеющих видеофайлы. Если ваша цель состоит в том, чтобы освободить место, то есть лучшие способы сделать это (кроме того, не все видео большие).

В любом случае, после того, как моя первоначальная версия волшебным образом перестала работать без видимой причины (да, я пытался учесть все), я использовал работать вокруг , Единственный недостаток использования pushd в том, что если вы прервете пакетный файл, вы попадете на тот диск, на котором он находился, когда вы нажали Ctrl + Перерыв ,

Вместо того, чтобы просто слепо удалять все, я сделал так, чтобы он строил вторичный пакетный файл ( delmovie.bat ), который вы можете просмотреть, чтобы убедиться, что там нет ничего, что вы хотите сохранить. Затем вы можете просто запустить сгенерированный пакетный файл, чтобы удалить их. Это займет несколько дополнительных секунд, но гораздо безопаснее.

@echo off
echo @echo off > delmovie.bat
for %%i in (C:\Users C:\Videos D:\ E:\ F:\) do (
  pushd %%i
  for /r %%j in (*.mp4 *.mpeg *.mkv *.flv *.avi) do (
    echo del "%%j" >> %~dp0delmovie.bat
  )
  popd
)

Эта версия исключает системные каталоги с белым списком, а не с черным списком, поэтому вместо исключения каталогов, которые вы хотите игнорировать, она добавляет те, которые вы хотите сканировать (наоборот, было бы немного сложнее, и я могу предоставьте скрипт для этого, если вам нужно). я добавил c:\videos в качестве примера того, как вы можете добавить свои собственные каталоги, если это необходимо (ничего не мешает оставить c:'videos там, если у вас нет такого каталога).

Synetech
источник
Большое спасибо. Это будет работать для меня. В любом случае, чтобы не удалять любые видеофайлы, связанные с системными файлами, изменив что-либо в этом коде. Например, make read только для C: \ Program Files & amp; C: \ папка Windows. Как это.
Vinayak Shinde