Windows 10: script con expresiones regulares para comparar nombres de archivos parciales y copiar los que no existen

Windows 10: script con expresiones regulares para comparar nombres de archivos parciales y copiar los que no existen

Estoy ejecutando Windows 10.

Me gustaría copiar muchos archivos de una carpeta a otra y probablemente necesite un script o cualquier otra solución que pueda hacerlo.

Tengo 2 carpetas: la carpeta Acontiene archivos llamados así:

00010_name0_1680x1050.jpg
00020_name11_1680x1050.jpg
00021_name222_1680x1050.jpg
00022_name300_1680x1050.jpg

mientras que la carpeta de destino Btiene archivos con nombres así:

00010_name0_1920x1200.jpg
00020_name11_1920x1200.jpg
00021_name222_1920x1200.jpg
00030_name500_1920x1200.jpg

Entonces los nombres de archivos son los mismos excepto que difieren en la última parte, sobre la resolución.

Me gustaría copiar todos los archivos de Aa B, pero solo aquellos que tienen una primera parte del nombre diferente, hasta la última _que separa la resolución.

Entonces, tal vez necesite un script de expresiones regulares que pueda comparar nombres y decidir si copiarlos o no. Se agradecerá cualquier tipo de solución sencilla.

Respuesta1

Puede utilizar este tipo de script de PowerShell:

# Save directory paths to vars
$dirA = C:\Some\Folder\A
$dirB = C:\Some\Folder\B

# Get file names of each found .jpg (with 1920x1200 in name)
$fileNamesB = (Get-ChildItem -Path $dirB -Filter *_1920x1200.jpg).Name

# Get prefixes of names that shouldn't be copied, by removing the resolution postfix
# % is shorthand for ForEach-Object 
$prefixesB = $fileNamesB | % { $_ -replace "_1920x1200\.jpg$", '' }

$filesA = Get-ChildItem -Path $dirA -Filter *_1680x1050.jpg
# Filter files by checking their name property against our prefixes
# ? is shorthand for Where-Object
$filteredFilesA = $filesA | ? { ($_.Name -replace "_1680x1050\.jpg$", '') -NotIn $prefixesB } 

# Copy the filtered files to folder B
$filteredFilesA | Copy-Item -Destination $dirB

La explicación de las funciones está en los comentarios.

información relacionada