es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Script de POWERSHELL para mover sólo los archivos con dígitos numéricos (en el nombre de archivo) en común.

En los últimos días me ayudaron a encontrar un script de POWERHELL que me ayudaría a mover solo archivos que tuvieran los primeros 8 caracteres en común.

El script es el siguiente y funciona perfectamente:

$destination_folder = "C:\TEMP\DESTINATION"
$filelist = Get-ChildItem -Path "C:\TEMP\ORIGIN" -File -Force -Recurse
$filelist | Group-Object -Property {$_.basename.Substring(0,8)} | Where-Object Count -gt 1 | ForEach-Object {$_.Group | Move-Item -Destination $destination_folder}

Lo que me gustaría, y lo que me ayudaría mucho, es modificar el script anterior de tal manera que los archivos que tengan al menos 8 caracteres numéricos en común se muevan (incluso si no están al principio del nombre), para que la búsqueda se realice en todo el nombre del archivo y no solo en los primeros 8 caracteres.

¿Crees que es posible obtener tal resultado?

Desde ya, gracias a todos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible modificar el guion anterior para mover archivos que tengan al menos 8 caracteres numéricos en común, independientemente de su posición en el nombre de archivo. Aquí hay una manera de hacerlo:

    $destination_folder = "C:\TEMP\DESTINATION"
    $filelist = Get-ChildItem -Path "C:\TEMP\ORIGIN" -File -Force -Recurse
    
    $filelist | Where-Object { $_.Name -match '\d{8,}' } | Group-Object -Property { $_.Name -replace '\D', '' } |
    Where-Object Count -gt 1 | ForEach-Object { $_.Group | Move-Item -Destination $destination_folder }
    

    En este guion modificado, usamos el cmdlet Where-Object para filtrar la lista de archivos e incluir solo aquellos cuyos nombres contienen al menos 8 dígitos consecutivos. Luego, agrupamos los archivos en función de la parte numérica de sus nombres de archivo, usando una expresión regular para eliminar todos los caracteres que no sean dígitos. Finalmente, movemos los archivos a la carpeta de destino especificada, como en el guion original.

Comments are closed.