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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  No consigo copiar archivos segun su tamaño en .bat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No consigo copiar archivos segun su tamaño en .bat  (Leído 1,066 veces)
mario290386

Desconectado Desconectado

Mensajes: 23


Ver Perfil
No consigo copiar archivos segun su tamaño en .bat
« en: 18 Octubre 2016, 23:33 pm »

Hola, lo primero saludar a toda la comunidad :-*, Me llamo Mario y tengo un problema que espero me pueda ayudar algún entendido del tema.

Resulta que por el trabajo que desempeño a diario necesito estar continuamente copiando información de bases de datos  que se encuentra almacenada en varios ordenadores y las paso a diferentes USB o unidades extraíbles,  por lo que estoy usando la siguiente rutina para hacer el proceso más cómodo, y la verdad que funciona muy bien:

IF NOT EXIST ".\cosas\"%USERNAME% MD ".\cosas\"%USERNAME%cd ".\cosas\"%USERNAME%

for /R %USERPROFILE%\Pictures\ %%x in (*.accdb) do copy "%%x" "%NOMBRE%BASE-DATOS"

Pues bien, el  problema que tengo es que necesito sólo copiar algunos archivos que no superen un cierto tamaño, por ejemplo solo necesito copiar que se copien los archivos que pesen menos de 200 mb.

 He visto por internet algunos ejemplos de cómo se hace el comando, pero no consigo insertarlo en la rutina mia anterior, por ejemplo,  he intentado utilizar esto:

for /R %USERPROFILE%\Pictures\ %%x in (*.accdb) do copy "%%x" "%NOMBRE%BASE-DATOS"/MAX:1000

Pero no me funciona, no sé si hay que colocar el parametro “MAX:” en otro lugar o es que no se hace de esta manera, pero yo necesito que en el script que utilizo pueda insertar ese parámetro de alguna manera.

Espero que alguien me pueda ayudar porque esto me lleva de cabeza ya bastante tiempo y es un engorro que se me copien todos los archivos y no poder separarlos por fecha o por tamaño.

Un saludo y gracias!!.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.708



Ver Perfil
Re: No consigo copiar archivos segun su tamaño en .bat
« Respuesta #1 en: 19 Octubre 2016, 01:25 am »

He visto por internet algunos ejemplos de cómo se hace el comando, pero no consigo insertarlo en la rutina mia anterior, por ejemplo,  he intentado utilizar esto:

for /R %USERPROFILE%\Pictures\ %%x in (*.accdb) do copy "%%x" "%NOMBRE%BASE-DATOS"/MAX:1000

Pero no me funciona, no sé si hay que colocar el parametro “MAX:” en otro lugar o es que no se hace de esta manera

Hola.

Desconozco donde habrás visto eso, pero te aseguro que el comando Copy no proporciona ningún parámetro ni ninguna otra forma que se te pueda ocurrir para realizar ese tipo de operación de copiado individual y selectivo por tamaño, sencillamente eso de "/MAX:n" no existe, te has debido confundir con lo que viste.

Dicho esto, para solucionar el problema que describes simplemente puedes usar el modificador de variable especial de For "~z" para obtener y al mismo tiempo evaluar/comparar el tamaño, en bytes, de cada archivo de la iteración. Ejemplo:

Código
  1. @Echo OFF
  2.  
  3. Set /A "maxFilesize=209715200" & REM 200 Megabytes
  4.  
  5. For /R "%USERPROFILE%\Pictures\" %%x in ("*.accdb") Do (
  6. If %%~zx LSS %maxFilesize% (
  7. Copy "%%~fx" "%NOMBRE%BASE-DATOS"
  8. )
  9. )
  10.  
  11. Pause & Exit /B 0

Por último, ten en cuenta que el valor máximo que puedes especificar en la variable maxFilesize es 2.147.483.647 (2 gigabytes), o dicho de otra forma, el valor máximo de un entero de 32 bits de precisión, esa es la capacidad aritmética de operación en Batch. Sin embargo esto no afecta de ningún modo al valor máximo que puede devolver el modificador "~z" así que no devolverá falsos positivos ni nada por el estilo... en resumen, que si te es suficiente con tener un margen de comparación de hasta 2 gigas entonces no hay de que preocuparse, pero este tipo de evaluaciones son muy lentas en Batch, en comparación con cualquier otro lenguaje de hoy en día, y me refiero al simple hecho de enumerar los archivos de un directorio, es demaisiado lento y el impacto negativo es "5 veces mayor" si imprimes texto en la consola, así que... en Windows y sin necesidad de instalar intérpretes yo te recomendaría que migrases ese código, de Batch a PowerShell, o a VBS.

Saludos


« Última modificación: 19 Octubre 2016, 01:48 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
Tamaño de un Archivos o Carpeta
Programación Visual Basic
kakinets 5 1,943 Último mensaje 24 Septiembre 2005, 00:06 am
por kakinets
Manipular archivos de gran tamaño
Programación Visual Basic
WarGhost 6 1,178 Último mensaje 13 Junio 2006, 23:30 pm
por Chief
Colocar form segun tamaño de la screen
Programación Visual Basic
2 1,078 Último mensaje 29 Julio 2006, 18:17 pm
por _Sergi_
Copiar pantalla segun coordenadas
Programación Visual Basic
SheKeL_C$ 3 1,433 Último mensaje 8 Febrero 2009, 22:23 pm
por seba123neo
Copiar Archivos a partir de un tamaño establecido.
Scripting
iCastaneda 1 1,773 Último mensaje 16 Abril 2011, 00:24 am
por SuperDraco
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines