Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: dathax en 26 Mayo 2015, 10:56 am



Título: Script copy Windows
Publicado por: dathax en 26 Mayo 2015, 10:56 am
Buenos dias,

Tengo que hacer un script para un cliente con Windows, no tengo demasiada experiencia con Windows. Os explico un poco lo que necesito a ver si alguien me puede guiar.

Tengo una estructura de carpetas y ficheros.

Ejemplo:

IRPF
      2010
             3.xls
             4.xls
             347
                    1.xls
                    2.xls
       2011
             6.xls
             7.xls
             347
                   8.xls
                   9.xls

Como podeis ver hay una carpeta llamada IRPF dentro de la qual hay estan las carpetas 2010 y 2011 que contienen archivos y otra carpeta llamada 347 que contiene más archivos.

Necesitaria crear una estrucutra de archivos igual que la que tengo en la qual dentro de las carpetas 2010 y 2011 unicamente se encuentren los archivos que hay dentro de las carpetas 347 de cada directorio.

IRPF
      2010
              1.xls
              2.xls
       2011
               8.xls
               9.xls

Sabeis como lo prodría hacer?

Muchas gracias,

Saludos!


Título: Re: Script copy Windows
Publicado por: Eleкtro en 26 Mayo 2015, 11:12 am
Buenas.

· Si formulas una pregunta sobre cómo desarrollar un código de programación, al menos indica si tienes preferencia por algún lenguaje en particular.
· Intenta usar la etiqueta de lista ([ list ]), o la de código en su defecto ([ code ]) para darle formato a esa "estructura" que escribiste, las etiquetas del editor están para usarlas.

Vamos al tema, ¿te refieres a mover/copiar los archivos contenidos en las carpetas hijo "347", a las carpetas padre ("2010", "2011", etc)?

Solo tienes que realizar una búsqueda recursiva de directorios para hallar las carpetas con nombre "347", enumerar los archivos de dicha carpeta, retroceder un nivel de directorio, y mover/copiar los archivos,
en resumen, iterar las subcarpetas y luego los archivos para moverlos/copiarlos.

Pseudo Código:
Código:
folderPaths[] = GetFolders( rootDir="C:\Ruta de IRPF", pattern="*347*", recursiveSearch=True )

For each foldePath as String in folderPaths Do:

    filePaths = GetFiles( rootDir=folderPath, recursiveSearch=False )

    For each filePath as String in filePaths Do:

        parentFolderPath = GetParentFolder( file=filePath )
      
        MoveFile( sourceFile=filePath, targetFile=parentFolderPath + "\" + GetFileName( file=filePath ) )

    End For

End For

Es algo tecnicamente sencillo en cualquier lenguaje (aunque ya que hablamos de Windows, te sugiero no utilizar Batch, es muy tedioso e inutil).

Saludos