3

У меня есть 100000 mp3-файлов в одном каталоге, каждый файл содержит произвольное имя файла, и у меня есть другой лист Excel, содержащий имя mp3-файла и имя, на которое он отображается. Есть ли способ разработать скрипт или стороннее программное обеспечение, которое может помочь разбить эти файлы на 3 разные папки

Пример:

  • В каталоге

Файл, такой как: fasf4a5465.mp3, fasdf35434.mp3, vefbgwsbgg.mp3

  • В Excel

    1. Столбец 1: имя файла = fasf4a5465.mp3, столбец 2 «Файловая группа» = группа1
    2. Столбец 1: Имя файла = fasdf35434.mp3, Столбец 2 «Файловая группа» = Группа2
    3. Столбец 1: Имя файла = vefbgwsbgg.mp3, Столбец 2 «Файловая группа» = Группа3

Таким образом, мой окончательный вывод будет три разные папки (группа 1, группа 2, группа 3), 100000 будут классифицированы в соответствии с таблицей Excel Excel

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

Любой обходной путь для этого?

1 ответ1

1

У меня есть 100000 mp3-файлов в одном каталоге, каждый файл содержит произвольное имя файла, и у меня есть другой лист Excel, содержащий имя mp3-файла и имя, на которое он отображается. Есть ли способ разработать скрипт или стороннее программное обеспечение, которое может помочь разбить эти файлы на 3 разные папки

  • В Excel

    1. Столбец 1: имя файла = fasf4a5465.mp3, столбец 2 «Файловая группа» = группа1
    2. Столбец 1: Имя файла = fasdf35434.mp3, Столбец 2 «Файловая группа» = Группа2
    3. Столбец 1: Имя файла = vefbgwsbgg.mp3, Столбец 2 «Файловая группа» = Группа3

Итак, это скрипт, который вы хотите сделать, а затем Powershell для спасения с помощью приведенной ниже логики.

Объясненные переменные скрипта PowerShell

  • $ExcelFile =
    • Вам нужно будет указать, чтобы эта переменная указывала на ваш файл XLS или XLSX (да, любой из них будет работать), который содержит сопоставления, или значения столбца на строку, где первый столбец - это имя файла MP3 а второй - имя группы или новые подпапки, в которые будут скопированы эти файлы.
  • $CSVFile =
    • Вам нужно будет сделать так, чтобы эта переменная указывала на преобразованный временный файл CSV (на основе того, что находится в Excel ($ExcelFile)), чтобы остальная часть логики сделала его волшебным. Если этот файл уже существует, я поставлю логику, чтобы перезаписать его, чтобы не беспокоиться о статическом имени файла.
  • $MP3SourceDir =
    • Вам нужно будет сделать так, чтобы эта переменная указывала на ваш исходный каталог MP3 откуда эти файлы будут изначально извлечены, основываясь на именах файлов из первого столбца в таблице Excel. Предупреждение: вы ДОЛЖНЫ сохранить логику \$($_.first) в этой логике - просто подключите только другую часть пути.
  • $NewMP3Dir =
    • Вам нужно будет указать, чтобы эта переменная указывала на новое место, где будут создаваться новые папки [group] второго столбца для соответствующих файлов MP3 первого столбца, которые будут скопированы. Предупреждение: вы ДОЛЖНЫ сохранить логику \$($_.second) в этой логике - просто подключите только другую часть пути.

Пример скрипта PowerShell

$ExcelFile           = "C:\Path\Excel Worksheet.xlsx"
$CSVFile             = "C:\Path\ExportCSV.csv"
$Excel               = New-Object -ComObject excel.application
$Excel.visible       = $False
$Excel.displayalerts = $False
$WorkBook            = $Excel.Workbooks.Open("$ExcelFile")
$WorkSheet           = $Workbook.worksheets.Item(1)

If (Test-Path $CSVFile){
    Remove-Item $CSVFile
}

$WorkBook.SaveAs("$CSVFile", 6)
$Excel.quit()

Import-Csv "$CSVFile" -Header ("first","second") | ForEach {
    $MP3SourceDir = "D:\Path\SourceMP3\$($_.first)"
    $NewMP3Dir    = "D:\Path\NewMP3\$($_.second)"
    New-Item -ItemType Dir "$NewMP3Dir" -Force
    Copy-Item "$MP3SourceDir" -Destination "$NewMP3Dir\$($_.first)" -Force
    }

(Обратите внимание, что это источник, из которого я получил логическую идею для преобразования xls в csv, чтобы затем прочитать значения с разделителями в файле csv, а затем сделать все остальное, поэтому я также внес много изменений)

(Этот сценарий по существу берет существующий файл XLS или XLSX с двумя значениями столбца [сопоставление] в столбце A и столбце B (все строки) и сохраняет его в формате CSV в другой файл CSV. Затем он считывает из этого файла CSV, а значение CSV столбца A (для каждой строки или строки) используется в качестве имени файла для копирования в другую папку (или подпапку), которое является значением CSV столбца B (в той же строке или строке).). Каждая строка или строка должна содержать два значения, первое из которых является именем файла, а второе - именем папки - это значения, циклически выполненные при выполнении команд на копирование и т.д.)

Источник: PowerShell XLS в CSV


Дальнейшее чтение команд PowerShell

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