¿Cómo encuentro imágenes según sus números en el archivo de Excel?

¿Cómo encuentro imágenes según sus números en el archivo de Excel?

Tengo 1.015 imágenes en una carpeta y esta imagen está clasificada en siete tipos y estos tipos son categorías de diagnósticos médicos de cáncer de piel, y las mismas imágenes están clasificadas en el archivo Excel por número (el número de cada imagen corresponde al tipo de diagnóstico de esta imagen). Claramente cada imagen tiene un número específico correspondiente al tipo de diagnóstico, mi pregunta es cómo ordenar estas imágenes en la carpeta en grupos para que cada grupo de imágenes tenga el mismo diagnóstico.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Respuesta1

Puedes probar un enfoque como el siguiente en PowerShell. Ciertamente se puede optimizar, pero quería que fuera sencillo de entender con 2 pasos: - El primero: creación del árbol de destino según tu archivo de entrada (.csv). - El segundo. : archivos de imágenes en movimiento en los subdirectorios correspondientes)


#The process : 
$BasedImages = "\\path\to\ImagesDirectory"
$csvfile = "\\path\to\Inputcsvfile.csv"

#Gather all subfolders in the Images Directory (only first level) and put the name of these folder in a var. The only property useful for later use is the Directory name. Useless to gather all properties 
$ExistingSubDir = Get-ChildItem -Path $BasedImages -Directory | Select-Object -Property name

# Gather unique diagnosis in the input file and put in a var. The only useful property in the dx property for a later use. Useless to collect more info. 
$UniqueDiagnosis = Import-Csv -Path $csvfile | Select-Object -property dx -Unique

# gather all images files FullName in the Images Directory and put in a var. it seems that only  Name,DirectoryName, FullName properties will be usefull for later use
$AllImagesFiles = Get-ChildItem -Path $BasedImages -File | Select-Object -Property Name, DirectoryName FullName

# now First Step : build a Tree with  subfolders named by the unique Diagnosis name. 
foreach ($Diagnosis in $UniqueDiagnosis)
    { 
    # search if a diagnosis dir name (dx field in the input .csv file) exist in the ImageDirectory and put the result in a var
    if ($ExistingSubDir -contains $Diagnosis) 
        { 
        Write-Host "$ExistingSubDir is still existing, no action at this step" -ForegroundColor Green 
        }
    else
        {
        New-Item -Path $BasedImages -Name $Diagnosis -ItemType Directory
        Write-Host "a sub-directory named $Diagnosis has been created in the folder $BasedImages" -ForegroundColor Yellow
        }
    }

# At this step, you'll have some sub directories named with the name of all diagnosis (fied dx in the input file)
# Now Step 2 Time to move the files in the root folder
foreach ($image in $AllImagesFiles)
    { 
    $TargetSubDir = Get-Item -Path $($image.fullName)
    Move-Item -Path $($Image.FullName) -Destination ( Join-Path -Path (Split-Path -Path $($Image.DirectoryName) -Parent) -ChildPath $TargetSubDir)
    Write-Host "the image named $($image.name) has been moved to the sud directory $TargetSubDir" -ForegroundColor Green
    }

Cuidado, no he probado completamente el código, úsalo con precaución.

oliva

información relacionada