пакетное перемещение для разных типов файлов в разные имена папок

1837
Roger

У меня есть файлы, содержащие в

C: \ foldername1 \ Files \ soandso1.mkv C: \ foldername2 \ Files \ soandso2.mp4 C: \ foldername3 \ Files \ soandso3.avi

Я хочу переместить .mkv, .mp4 и .avi обратно в родительскую папку, которая называется foldername1, 2, 3.

foldername будет отличаться для каждого файла soandso. В основном, я хочу избавиться от папки «Files» и разместить медиа-файлы в foldername1, 2 и 3.

Есть ли пакетная команда для этого?

0
Поэтому foldername1 \ Files содержит только MKV, foldername2 \ Files содержит только MP4, а foldername3 \ Files содержит только AVI? Karan 11 лет назад 0
Нет, это может быть случайно. «foldername» может перейти к «foldername50», который содержит папку «Files». Внутри «Files» содержатся файлы .mkv, .avi или .mp4. Roger 11 лет назад 0
Кроме того, было бы хорошо, если бы я мог включить команду, которая удаляет папку «Файлы» после перемещения. Roger 11 лет назад 0
Поскольку это выглядит как разовая сделка, есть ли причина, по которой простой поиск + сортировка по расширению + вырезка / вставка не подойдет? Кроме того, какая версия Windows? Karan 11 лет назад 0
потому что существует несколько «foldername», что означает, что я должен войти в каждый из них, перейти в «Files», вырезать и вставить его в родительское «foldername»? Существует ли метод поиска и сортировки пасты, о котором я не знаю? Я довольно новичок в такого рода вещах. Roger 11 лет назад 0
Подождите, забудьте о моем предыдущем комментарии. Теперь я вижу, что вам не нужна отдельная папка для AVI, MKV и т. Д., Но вы хотите, чтобы каждый файл помещался в свою родительскую папку. Karan 11 лет назад 0
это правильно. Roger 11 лет назад 0

1 ответ на вопрос

1
Karan

Something I put together quickly; no time to test extensively right now:

@echo off for /f "delims=" %%d in ('dir /b/ad-s-h') do ( if exist "%%d\Files" ( pushd "%%d\Files" if exist *.avi move *.avi .. if exist *.mkv move *.mkv .. if exist *.mp4 move *.mp4 .. popd rd "%%d\Files" ) ) 

If you run it in C:\, it will look at each top-level folder on the drive and if it contains a Files sub-folder, it will move any AVI/MKV/MP4 files found up one level (i.e. to the top-level folder), then delete the Files sub-folder.

If any other files exist in Files the folder will not be deleted. You can use rd /s /q if you want to forcibly delete. Also, move will prompt you each time to overwrite duplicates (if any), which can be done automatically by using move /y instead.

Я использую Windows 7, как мне выполнить эту команду? Roger 11 лет назад 0
Скопируйте + вставьте в Блокнот, сохраните как «D: \ Test.bat» (с кавычками!), Затем откройте окно командной строки, перейдите к C: \, D: \ или к тому диску, на котором вы хотите его запустить. и введите `D: \ Test.bat`. Я советую вам скопировать несколько папок на другой диск и сначала протестировать на них пакетный файл, прежде чем освободить его для всей вашей коллекции (хотя он не удалит файлы, если они сохранены, как указано выше). Karan 11 лет назад 0
Вот Это Да! Протестировал и все работает. Спасибо Каран! Вы только что сэкономили мне часы работы с этим. Roger 11 лет назад 0
Хм ... выполнение на реальном диске с носителем не завершило работу. Некоторые файлы не перемещались, а папка «Файлы» не удалялась сама по себе. Возможно, это был слишком большой пакет для выполнения всех команд, но он выполнил большую часть работы. Roger 11 лет назад 0
Любые ошибки отображаются? * Move * остановился и попросил вас перезаписать некоторые файлы с такими же именами? Кроме того, вы проверили оставшиеся папки * Files * - какие файлы там еще были? Karan 11 лет назад 0