Como comparar e filtrar arquivos no diretório com nome de arquivo no arquivo de texto ou folha de excel?

3

Eu tenho 100000 arquivos mp3 em um diretório, cada arquivo contém um nome de arquivo aleatório, e eu tenho outra planilha de excel contendo o nome do arquivo mp3 e para quem ele mapeia. Existe alguma maneira de desenvolver um script ou software de terceiros pode ajudar a categorizar esses arquivos em 3 pastas diferentes

Exemplo:

  • No diretório

Arquivo como: fasf4a5465.mp3, fasdf35434.mp3, vefbgwsbgg.mp3

  • No Excel

    1. Coluna 1: Nome do arquivo = fasf4a5465.mp3, Coluna 2 'Grupo de arquivos' = Grupo1
    2. Coluna 1: Nome do arquivo = fasdf35434.mp3, Coluna 2 'Grupo de arquivos' = Grupo2
    3. Coluna 1: Nome do arquivo = vefbgwsbgg.mp3, Coluna 2 'Grupo de arquivos' = Grupo3

Assim, minha saída final será de três pastas diferentes (Grupo 1, Grupo 2, Grupo 3), o número 100000 será classificado de acordo com o mapeamento da planilha do Excel

Como eu tenho muitos arquivos de Mp3, é difícil ouvir cada um deles e categorizá-los manualmente, então eu preciso de alguma forma uma maneira de comparar e colocá-los em locais diferentes

Qualquer solução para isso?

    
por AZUZ 27.12.2015 / 08:23

1 resposta

1

I have 100000 mp3 files in one directory, each file contain a random filename , and I have another excel sheet containing the mp3 file's name and to whom it maps to. Is there any way to develop a script or 3rd party software can help categorize these files into 3 different folder

  • In the Excel

    1. Column 1: File name = fasf4a5465.mp3, Column 2 'File Group' = Group1
    2. Column 1: File name = fasdf35434.mp3, Column 2 'File Group' = Group2
    3. Column 1: File name = vefbgwsbgg.mp3, Column 2 'File Group' = Group3

Ok, então é um script que você quer fazer e Powershell para o resgate com a lógica abaixo.

Variáveis de script do PowerShell explicadas

  • %código%
    • Você precisará fazer com que essa variável aponte para seu arquivo $ExcelFile = ou XLS (sim, qualquer um funcionará) que contenha os mapeamentos, ou os valores da coluna por linha que a primeira coluna é a XLSX nome do arquivo e a segunda coluna é o nome do grupo ou o novo subpastas esses arquivos serão copiados para.
  • %código%
    • Você precisará fazer com que essa variável aponte para o arquivo temporário MP3 convertido (com base no que está no Excel ( $CSVFile = )) para o restante da lógica fazer sua mágica. Se este arquivo já existir, eu coloco a lógica para sobrescrevê-lo, então não se preocupe com um nome de arquivo estático.
  • %código%
    • Você precisará fazer com que essa variável aponte para o diretório CSV source no qual esse arquivo será inicialmente baseado nos nomes de arquivo da primeira coluna na planilha do Excel. Aviso: você DEVE manter a lógica $ExcelFile nessa lógica - basta conectar apenas a outra parte do caminho.
  • %código%
    • Você precisará fazer com que essa variável aponte para o novo local onde as novas pastas [grupo] segunda coluna serão criadas para os arquivos primeira coluna $MP3SourceDir = aplicáveis para ser copiado. Aviso: você DEVE manter a lógica MP3 nessa lógica - basta conectar apenas a outra parte do caminho.

Exemplo de script do 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
    }

(note que esta é a fonte da qual obtive a ideia lógica para a conversão xls para csv para depois ler os valores delimitados no ficheiro csv para depois fazer o resto, por isso fiz também muitos ajustes)

(Este script essencialmente pega um arquivo XLS ou XLSX existente com dois valores de coluna [mapeamento] na coluna A e coluna B (todas as linhas), e salva em formato CSV para outro arquivo CSV. esse arquivo CSV e o valor CSV da coluna A (por linha ou linha) são usados como o nome do arquivo a ser copiado para outra pasta (ou subpasta), que é o valor CSV da coluna B (na mesma linha ou linha). ou a linha deve conter dois valores sendo o primeiro um nome de arquivo e o segundo um nome de pasta - estes são os valores em loop através da execução dos comandos para copiar, etc.)

Fonte: PowerShell XLS para CSV

Leitura adicional de comandos do PowerShell

por 27.12.2015 / 11:06