3

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

Проблема в том, что мне нужно отредактировать первый файл в каждой директории перед слиянием. Это означает, что когда я добавляю команду «copy /b * .mp3 name.mp3», объединенный файл имеет часть 2 в начале и часть 1 в конце, предположительно потому, что он был создан последним.

Есть ли способ использовать команду копирования, чтобы файлы объединялись в порядке имен? Каждая папка имеет разное количество частей, от 2 до 1000, поэтому я не хочу перечислять каждый файл с «+» между ними.

В идеале я хотел бы найти что-то, что можно вставить в команду копирования, которую я уже использую. Иначе, есть ли способ перегруппировать файлы в папке, чтобы при вводе "DIR" часть 1 отображалась первой, даже если она редактировалась последней?

2 ответа2

2

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

dir /b * .mp3> filelist.txt

ИЛИ ЖЕ

dir /b /s * .mp3> filelist.txt

/b означает краткий вывод, только имена файлов; /s также означает подкаталоги; «>» означает "отправить вывод на"

командный файл для копирования с именем copymp3.bat:

copy /b name.mp3 + /b% 1 name.mp3

% 1 означает "использовать первый переданный параметр командной строки".

Сортируйте список как хотите, затем отредактируйте filelist.txt, чтобы каждая строка выглядела следующим образом:

вызовите copymp3.bat "имя первого файла в list.mp3"

Команда "call" говорит, что нужно запустить пакетный файл и дождаться окончания выполнения, прежде чем перейти к следующей команде. Кавычки необходимы вокруг каждого имени файла, потому что пробелы будут сигнализировать множество параметров, а не один единственный. Прежде чем добавить команду в начале, выполните поиск и замену для .mp3 и замените на .mp3.

Переименуйте файл filelist.txt в filelist.bat, и он будет выполнен, если вы нажмете на кнопку dbl.

Google "пакетный файл cmd файл" для получения дополнительной информации.

Если у вас есть тысячи файлов, для создания командного файла потребуется некоторое время. Редактор поиска и замены, который может распознавать конец строки, был бы весьма полезен.

ТЕСТ ПЕРВЫЙ на небольшом подмножестве

1

Самый простой способ - использовать временный каталог.

  1. Создайте временный каталог (обычно подкаталог в каталоге, где находятся целевые файлы)
  2. В проводнике щелкните столбец « Имя», чтобы отсортировать файлы по имени.
  3. Выберите все необходимые файлы
  4. Переместить выбранные файлы во временный каталог (т.е. вырезать-вставить их или использовать другую команду перемещения)

Если вы выполните dir во временном каталоге, вы увидите, что порядок каталогов является алфавитным (т. dir Dir == dir /on), потому что это был порядок, в котором проводник перемещал их. Вы можете сделать то же самое, чтобы порядок следования каталогов был по дате, размеру или по любому другому столбцу, который есть в Проводнике. На этом этапе вы можете выполнить свои действия во временном каталоге, затем переместить их назад или просто удалить старый каталог (будьте осторожны, если временный находится внутри старого), переименовать временный и переместить его туда, где старый один был.

Одно предостережение: вы не можете просто сортировать и перемещать файлы в одну и ту же одну или две директории, потому что старые записи каталога для файлов могут быть повторно использованы, что приводит к тому, что каталоги "запоминают" старый порядок независимо от того, как вы отсортировали. их позже. Вот почему вам нужно создать новый временный каталог для использования, потому что в нем еще нет записей (т.е. нет удаленных файлов).

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