Crear un shell script para reconocer patrones y mover ficheros

Me gustaría saber como puedo crear un archivo BAT para poder mover carpetas y todo su contenido desde la carpeta de origen a otras carpetas en función del nombre de las mismas.

Es decir, si en una carpeta se van guardando una serie de trabajos cuyo nombre es generado automáticamente por un programa y dicho nombre consta de la fecha de creación seguido del nombre de la pieza mover por medio de un archivo BAT cada carpeta y su contenido a otras carpetas con el nombre de la pieza.

Por ejemplo carpetas con los siguientes nombres dentro de una carpeta:

20150505_1223_pieza1_N

20150505_1256_pieza4_N

20150505_1353_pieza2_B

20150505_1533_pieza4_B

20150505_1636_pieza3_N

20150505_1654_pieza1_A

20150505_1933_pieza2_A

Mover a carpetas llamadas Pieza1, Pieza2, Pieza3 o Pieza4.

2

2 Respuestas

54.430 pts. Desarrollador en Todoexpertos.com y Terminis.com (uno...

Yo usaría PowerShell que funciona en cualquier Windows y es mucho más potente que un simple bat.

Para abordar tu problema: tienes en una carpeta unos ficheros (como los que has puesto de ejemplo) y quieres "extraer" el código de pieza (que viene siempre después de 8 dígitos, carácter _, 4 dígitos y carácter _ de nuevo seguido de _LETRA) para crear, si no existe ya, una carpeta con dicho nombre y mover los ficheros allí.

Esto se puede hacer facilmente con powershell usando la siguiente regex:

[0-9]{8}_[0-9]{4}_(\w+)_[a-zA-Z]

El código completo en PowerShell sería:

$files = Get-Childitem -name
$ms = $files | select-string -pattern "[0-9]{8}_[0-9]{4}_(\w+)_[a-zA-Z]" -AllMatches | Foreach {$_.Matches}
foreach ($m in $ms)
{
    $dir =  $m.Groups[1].Value
    $file =  $m.Value
    if((Test-Path $dir) -eq 0)
    {
        mkdir $dir
    }
    mv $file $dir
}

Simplemente se obtiene del directorio en el que se ejecuta el script todos los ficheros que coincidan con el patrón indicado, se extrae el "directorio", se comprueba si existe ya un directorio con ese nombre, si no existe se crea y se termina por mover el fichero.

2.425 pts.

Te dejo un Link donde creo encontraras lo que buscas:

http://norfipc.com/utiles/tutorialbatch1.html

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas