¿Cómo comparar y filtrar archivos en el directorio con el nombre del archivo en el archivo de texto o en la hoja de Excel?


2

Tengo 100000 archivos mp3 en un directorio, cada archivo contiene un nombre de archivo aleatorio y tengo otra hoja de Excel que contiene el nombre del archivo mp3 y a quién se asigna. ¿Hay alguna forma de desarrollar un script o un software de terceros que pueda ayudar a clasificar estos archivos en 3 carpetas diferentes?

Ejemplo:

  • En el directorio

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

  • En el excel

    1. Columna 1: Nombre de archivo = fasf4a5465.mp3, Columna 2 'Grupo de archivos' = Grupo1
    2. Columna 1: Nombre de archivo = fasdf35434.mp3, Columna 2 'Grupo de archivos' = Grupo2
    3. Columna 1: Nombre de archivo = vefbgwsbgg.mp3, Columna 2 'Grupo de archivos' = Grupo3

Entonces, mi salida final será de tres carpetas diferentes (Grupo 1, Grupo2, Grupo3), el 100000 se clasificará según la asignación de hoja de Excel

Como tengo muchos archivos Mp3, es difícil escucharlos y clasificarlos manualmente, por lo que necesito de alguna manera una forma de compararlos y colocarlos en una ubicación diferente.

¿Alguna solución para eso?


1
Para mayor claridad. Ya tiene los nombres de archivo exactos en una lista y nombra el grupo en el que lo desea. ¿Correcto? Entonces, si le solicito que haga tres listas, copie y pegue group1 en un archivo de bloc de notas y guárdelo como group1.txt todos los nombres en esa lista serían para la carpeta deseada, ¿sí? ¿Puedes copiar y pegar una hoja de cálculo de Excel para comprender mejor con qué hay que trabajar? La solución podría ser crear una fórmula para separar la lista en varias listas distintas y luego usar la programación para crear carpetas y moverlas a dicha carpeta.
ejbytes

Respuestas:


0

Tengo 100000 archivos mp3 en un directorio, cada archivo contiene un nombre de archivo aleatorio y tengo otra hoja de Excel que contiene el nombre del archivo mp3 y a quién se asigna. ¿Hay alguna forma de desarrollar un script o un software de terceros que pueda ayudar a clasificar estos archivos en 3 carpetas diferentes?

  • En el excel

    1. Columna 1: Nombre de archivo = fasf4a5465.mp3, Columna 2 'Grupo de archivos' = Grupo1
    2. Columna 1: Nombre de archivo = fasdf35434.mp3, Columna 2 'Grupo de archivos' = Grupo2
    3. Columna 1: Nombre de archivo = vefbgwsbgg.mp3, Columna 2 'Grupo de archivos' = Grupo3

De acuerdo, entonces es un script que desea hacer esto, luego Powershell al rescate con la lógica a continuación.

Variables de script de PowerShell explicadas

  • $ExcelFile =
    • Deberá hacer que esta variable apunte a su archivo XLSo (sí, cualquiera de ellos funcionará) que contiene las asignaciones o los valores de columna por fila cuya primera columna es el nombre del archivo y la segunda columna es el nombre del grupo o las nuevas subcarpetas estos archivos se copiarán a.XLSXMP3
  • $CSVFile =
    • Deberá hacer que esta variable apunte al CSVarchivo temporal convertido (en función de lo que está en Excel ( $ExcelFile)) para que el resto de la lógica haga su magia. Si este archivo ya existe, pongo la lógica para sobrescribirlo para que no se preocupe por un nombre de archivo estático.
  • $MP3SourceDir =
    • Tendrá que hacer que esta variable apunte a su MP3directorio de origen, donde estos archivos se tomarán inicialmente según los nombres de archivo de la primera columna de la hoja de cálculo de Excel. Advertencia: DEBE mantener la \$($_.first)lógica en esta lógica; solo conecte la otra parte de la ruta.
  • $NewMP3Dir =
    • Deberá hacer que esta variable apunte a la nueva ubicación donde se crearán las nuevas carpetas de la segunda columna [grupo] para los archivos de la primera columna MP3 que se copiarán. Advertencia: DEBE mantener la \$($_.second)lógica en esta lógica; solo conecte la otra parte de la ruta.

Ejemplo de script de 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
    }

(Tenga en cuenta que esta es la fuente de la que obtuve la idea lógica de la conversión de xls a csv para luego leer los valores delimitados en el archivo csv para luego hacer el resto, así que también hice muchos ajustes)

(Este script esencialmente toma un archivo XLS o XLSX existente con dos valores de columna [mapeo] en la columna A y la columna B (todas las filas), y lo guarda en formato CSV en otro archivo CSV. Luego lee de ese archivo CSV y el CSV El valor de la columna A (por línea o fila) se utiliza como el nombre del archivo para copiar a otra carpeta (o subcarpeta), que es el valor CSV de la columna B (en la misma línea o fila). Cada línea o fila debe contener dos valores siendo el primero un nombre de archivo y el segundo un nombre de carpeta: estos son los valores en bucle ejecutando los comandos para copiar, etc.)

Fuente: PowerShell XLS a CSV


Lectura adicional de comandos de PowerShell


@AZUZ Por favor, avíseme si mi respuesta ayudó a resolver su problema y también revise Aceptar una respuesta para asegurarse de que comprende cómo funciona este sitio de preguntas y respuestas para cerrar el círculo de sus preguntas y obtener una respuesta que funcione para resolver sus problemas. Es tan simple como marcar la pequeña marca de verificación junto a la respuesta que resuelve su problema.
Pimp Juice IT
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.