-1

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

2 ответа2

1

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

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

Вместо того, чтобы просто слепо удалять все, я сделал так, чтобы он создавал вторичный пакетный файл (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 там, если у вас нет такого каталога).

1

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

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

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

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