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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Contar y mover Archivos con BAT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contar y mover Archivos con BAT  (Leído 3,440 veces)
naobradovich

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Contar y mover Archivos con BAT
« en: 19 Agosto 2016, 19:15 pm »

Buenas Buenas....!!  :D :D
Ya hace varios dias estoy leyendo,e intentando de armarme algo que no me sale para nada, o tengo ideas sueltas, pero no las puedo unificar. :-( :-(
Como dice el titulo necesito crear un bat para contar solo mil archivos formato out dentro de una carpeta con 50 mil y mover estos mil archivos a otra carpeta. 
Si no es muy difícil, ademas me gustaría que se muevan primero los archivos mas antiguos, si no con lo otro estoy mas que feliz!!!! ;D ;D

Desde ya muchísimas gracias


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: Contar y mover Archivos con BAT
« Respuesta #1 en: 19 Agosto 2016, 22:30 pm »

Somos generosos y ayudamos, pero no hacemos el trabajo de nadie por que no somos las hermanitas de la caridad. Ni siquiera has mostrado un código que demuestre que al menos lo hayas intentado hacer por ti mismo.

Con el comando ForFiles puedes listar los archivos de un directorio para obtener la fecha de creación/modificación y el nombre completo, el problema es que para una cantidad grande como 50.000 archivos entonces no te merece la pena hacerlo en Batch, es demasiado lento y engorroso, por ese motivo te mostraré una solución en otro lenguaje soportado nativamente por Windows...

El siguiente script lo he desarrollado en PowerShell, lo que hace es listar los archivos de un directorio según la extensión de archivo especificada, ordenar los archivos por la última fecha de modificación de cada uno, y mover los primeros 1.000 archivos con más antiguedad al directorio de destino:

Código
  1. $srcDir = "C:\Source\"
  2. $dstDir = "C:\Destination\"
  3. $ext = "txt"
  4. $max = 1000
  5.  
  6. Get-ChildItem -Path $srcDir -Filter "*.$($ext)" -Force |
  7. sort LastWriteTime | select -first $max |
  8. ForEach-Object {
  9. Move-Item -Path $_.FullName -Destination $dstDir -Force
  10. Write-Host "$($_.FullName) -> $($dstDir)$($_.Name)"
  11. }
  12.  
  13. Write-Host "Press any key to exit..."
  14. $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

EDITO:
...O como a mi me gusta desenvolverme, con la librería de classes de .NET:
Código
  1. # User fields
  2. $srcDir = "C:\Source\"
  3. $dstDir = "C:\Destination\"
  4. $ext    = "txt"
  5. $max    = 1000
  6.  
  7. # .NET Framework Classes
  8. $CON  = [System.Console]
  9. $DIR  = [System.IO.Directory]
  10. $PATH = [System.IO.Path]
  11. $LINQ = [System.Linq.Enumerable]
  12.  
  13. # LINQ's Key-selector functions
  14. $fileFunc = [Func[string, [System.IO.FileInfo]]]{ param($filepath) $filepath }
  15. $sortFunc = [Func[[System.IO.FileInfo], [System.DateTime]]]{ param($file) $file.LastWriteTime }
  16.  
  17. $files = $LINQ::Select($DIR::GetFiles($srcDir, "*.$($ext)", 0), $fileFunc)
  18. $group = $LINQ::Take($LINQ::OrderBy($files, $sortFunc), $max)
  19.  
  20. foreach ($file in $group) {
  21.    $dstFullname = $PATH::Combine($dstDir, $file.Name)
  22.    $CON::WriteLine("$($file.FullName) -> $($dstFullname)")
  23.    $file.MoveTo($dstFullname)
  24. }
  25.  
  26. $CON::WriteLine("Press any key to exit...")
  27. $CON::ReadKey($true)

Saludos


« Última modificación: 20 Agosto 2016, 02:08 am por Eleкtro » En línea


tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Contar y mover Archivos con BAT
« Respuesta #2 en: 20 Agosto 2016, 01:14 am »

Elektro:
            sin ánimo de ofenderte pero estaría bueno que seas coherente con  tus palabras.
Citar
Somos generosos y ayudamos, pero no hacemos el trabajo de nadie por que no somos las hermanitas de la caridad. Ni siquiera has mostrado un código que demuestre que al menos lo hayas intentado hacer por ti mismo.

naobradovich : como muy bien te han dicho estaría bueno que hagas un código y plantees tus dudas. También es cierto que sería mejor hacerlo en algún lenguaje de script más poderoso que el simple .bat, podría ser además vbscript(también nativo de windows) o python, inclusive cualquier otro, Ruby, perl,etc. sería cuestión que elijas un lenguaje más completo.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: Contar y mover Archivos con BAT
« Respuesta #3 en: 20 Agosto 2016, 02:12 am »

Elektro:
            sin ánimo de ofenderte pero estaría bueno que seas coherente con  tus palabras.

Soy coherente y también consciente de lo que intentas decirme, en realidad me estás llamando hipócrita de una forma sutil :xD, no me ofende y es comprensible que pienses así puesto que en este tipo de preguntas yo la primera vez advierto pero también ayudo (todo el mundo se merece que le expliquen y hagan una excepción la primera vez para darle una segunda oportunidad de hacer las cosas bien hechas en el futuro), ahora, si esa persona vuelve a publicar por segunda vez una pregunta igual de VAGA pidiéndolo todo hecho ...te aseguro que directamente ni le responderé.

Saludos!
« Última modificación: 20 Agosto 2016, 02:22 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
Ayuda. MOVER ARCHIVOS .TXT
Programación Visual Basic
xtrot 8 2,627 Último mensaje 11 Julio 2008, 23:51 pm
por xtrot
Mover archivos mediante robocopy
Scripting
bien1 4 10,953 Último mensaje 5 Junio 2012, 23:09 pm
por bien1
Contar archivos en .bat
Scripting
matarcola2 3 8,716 Último mensaje 2 Noviembre 2013, 23:31 pm
por santi810
Contar archivos
Windows
Roble44 1 2,314 Último mensaje 8 Agosto 2012, 02:06 am
por Eleкtro
[C#] Mover archivos de windows || Isolated Storage
.NET (C#, VB.NET, ASP)
n-utz 6 2,728 Último mensaje 23 Julio 2017, 22:17 pm
por TickTack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines