elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Bat para mover grupo de archivos por secuencia de numeros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bat para mover grupo de archivos por secuencia de numeros  (Leído 2,810 veces)
hardmaster

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Bat para mover grupo de archivos por secuencia de numeros
« en: 29 Junio 2016, 22:55 pm »

Tengo una carpeta llamada contrato, dentro de ella tengo archivos llamados dela siguiente manera "00361570001.tiff" ..... "00361577008.tiff" . Que los mueva a una carpeta llamada como el ultimo "00361577008", son cerca de 9 millones de archivos por lo que se requiere de un bat para la tarea.

En la carpeta quedarían 8 archivos correlativos llamados :

00361570001.tiff
00361571002.tiff
00361572003.tiff
00361573004.tiff
00361574005.tiff
00361575006.tiff
00361576007.tiff
00361577008.tiff

Lo que se necesita, es que tome los últimos tres caracteres del nombre del archivo, empezando del 001 e incrementando de 1 en 1, hasta llegar nuevamente a 001 que seria otra carpeta.
Cree la carpeta con el nombre del ultimo archivo y los mueva. (Cada vez que se encuentre con un 001 cree una carpeta y mueva los archivos correlativos )
Espero se entienda la idea

Código
  1. @echo off
  2.  
  3. for %%a in (*.tiff) do call :Analiza %%a
  4. GOTO:EOF
  5.  
  6. :Analiza
  7. (analiza los ultimos tres digitos)
  8. goto Sigue
  9.  
  10. :Sigue
  11. if (nombre archivo) LSS (nombre archivo siguiente)
  12. goto Carpeta
  13.  
  14. :Carpeta
  15. mkdir (crear carpeta con el nombre del ultimo archivo)
  16. goto Mover
  17.  
  18. :Mover
  19. move (mover grupo de archivos a la carpeta creada)
  20. goto EOF



Analizar el nombre del archivo, toma los últimos 3 digitos y los compara con el siguiente archivo, si es igual crea una carpeta con el nombre del primero y mueve el archivo, si es mayor sigue con el siguiente hasta que llegue nuevamente a 001, ahí crea una carpeta con el nombre del ultimo archivo, y mueve los archivos a la carpeta creada.


Cualquier ayuda es de suma importancia. Espero me puedan ayudar. Gracias de antemano !!!


« Última modificación: 30 Junio 2016, 11:26 am por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Bat para mover grupo de archivos por secuencia de numeros
« Respuesta #1 en: 30 Junio 2016, 11:24 am »

En Batch puedes hacerlo, pero aparte de ser tedioso llevarlo a cabo, un script considerado eficiente que hiciese las verificaciones necesarias probablemente resultaría en un procedimiento muy, muy lento, llegando a superar sin exagerar los 60 minutos o tal vez +90-120, en caso de que realmente sean +9 millones de archivos quizás varias horas (es dificil calcularlo a ojo, es realmente muy lento), por la lógica de filtración de archivos (incrementación, substring/regex, etc). Sin embargo, en otro lenguaje sería una tarea simple y sencilla de agrupación de archivos según "X" condición.

Supongo que el lenguaje te será indiferente ya que solo pareces querer llevar a cabo una tarea administrativa con cualquier herramienta que pueda hacerlo, esté escrita en el lenguaje que esté. Pero antes de empezar y mostrarte el código necesario (en C#/VB.NET, no Batch), para asegurarnos que todo me haya quedado claro por favor muéstrame otro ejemplo real aparte de este:
Citar
Código:
00361570001.tiff
00361571002.tiff
00361572003.tiff
00361573004.tiff
00361574005.tiff
00361575006.tiff
00361576007.tiff
00361577008.tiff

Ya que, con los datos que has proporcionado, yo supongo que el siguiente grupo a mover sería algo así:
Código:
00361580001.tiff
00361581002.tiff
00361582003.tiff
00361583004.tiff
00361584005.tiff
00361585006.tiff
00361586007.tiff
00361587008.tiff

Y el siguiente podría ser este:
Código:
00361590001.tiff
00361591002.tiff
00361592003.tiff
00361593004.tiff
00361594005.tiff
00361595006.tiff
00361596007.tiff
00361597008.tiff

Es decir, que el "delimitador" virtual empezaría siempre en esta posición:

00361570001.tiff
*******1002.tiff
*******2003.tiff
*******3004.tiff
*******4005.tiff
*******5006.tiff
*******6007.tiff
*******7008.tiff

00361580001.tiff
*******1002.tiff
*******2003.tiff
*******3004.tiff
*******4005.tiff
*******5006.tiff
*******6007.tiff
*******7008.tiff

00361590001.tiff
*******1002.tiff
*******2003.tiff
*******3004.tiff
*******4005.tiff
*******5006.tiff
*******6007.tiff
*******7008.tiff


¿Todo esto que acabo de decir es correcto?.

Saludos


« Última modificación: 30 Junio 2016, 11:33 am por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda] Sacar números primos de una secuencia
Programación Visual Basic
Hurubnar 2 4,004 Último mensaje 25 Febrero 2011, 16:59 pm
por Hurubnar
Leer una secuencia de numeros
Programación C/C++
Kougami 2 2,272 Último mensaje 11 Diciembre 2016, 00:31 am
por Kougami
Secuencia de números en C
Programación C/C++
relaxingcup 1 2,632 Último mensaje 18 Marzo 2023, 01:22 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines