Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: general9000 en 23 Diciembre 2008, 15:09 pm



Título: [batch] ayuda con este algoritmo
Publicado por: general9000 en 23 Diciembre 2008, 15:09 pm
hola a todos 

como puedo implementar este algoritmo en batch ?

set ruta="c:\carpeta\archivo.exe"
SI (archivo.exe ha sido creado > 12/10/08)  O (su tamaño > 100)
ENTONCES   
        copiar a carpeta  "D:\BACKUP"
exit

pd. quiero manejar la ruta o el nombre del archivo desde dentro del bat
      No pasándolo como parametro en consola

muchas gracias por cualquier sugerencia


Título: Re: [batch] ayuda con este algoritmo
Publicado por: FranciskoAsdf en 26 Diciembre 2008, 02:47 am
mira lo que se hacer yo es que te diga si existe o no el archivo, pero lo de la fecha nuse :S.....

seria algo asi

Código:
@echo off

SET ruta="C:\carpeta\"

CD %ruta%

IF EXIST %ruta%\tuarchivo.exe (
echo El archivo existe....
echo copiando a "C:\backup"
copy %ruta%\tuarchivo.exe "D:\backup\"
IF %ERRORLEVEL% GTR 1 (ECHO error al copiar el archivo) & exit
) ELSE (el archivo no existe)
exit 0


asi deberia funcionar, lo que haces es que si existe el archivo te dice que existe xD, y despues lo copia a la carpeta "D:\backup\", ademas si hubo algun fallo al copiar el archivo te lo dice y sale del programa....

si no, sale del programa diciendote que no existe

mira pruebalo tal cual, y si te da algun error quitale la linea que dice "IF %ERRORLEVEL% GTR 1 (ECHO error al copiar el archivo) & exit"
y vuelve a probarlo.......

ahora para que te diga el dia creado y el peso del archivo nuse como hacerlo...

saludos ^^


Título: Re: [batch] ayuda con este algoritmo
Publicado por: kraszic en 26 Diciembre 2008, 17:02 pm
hola a todos 

como puedo implementar este algoritmo en batch ?

set ruta="c:\carpeta\archivo.exe"
SI (archivo.exe ha sido creado > 12/10/08)  O (su tamaño > 100)
ENTONCES   
        copiar a carpeta  "D:\BACKUP"
exit

pd. quiero manejar la ruta o el nombre del archivo desde dentro del bat
      No pasándolo como parametro en consola

muchas gracias por cualquier sugerencia

Buenas, he hecho un code a ver si te sirve. Lo malo es que la fecha de creacion no la sabia sacar, asi que he sacado la fecha de modificacion del archivo.
Dejo el code comentado con rem, no lo he testeado.

Código
  1. @echo off
  2.  
  3. set anyo=2008
  4. set mes=10
  5. set dia=12
  6.  
  7. set ruta="c:\carpeta\archivo.exe"
  8.  
  9. call:func %ruta%
  10.  
  11. rem Mediante la funcion le pasamos el argumento %1 al programa. Creo que asi funcionara.
  12. :func
  13. echo %~t1 >file001.txt
  14. rem Obtenemos el formato de la fecha y lo guardamos en un archivo.
  15.  
  16. FOR /f "tokens=*" %%a in (file001.txt) do (set fe=%%a)
  17. set fe1=%fe:~0,2%
  18. set fe2=%fe:~3,2%
  19. set fe3=%fe:~6,4%
  20. rem Mediante el filtro for, cogemos la fecha y la separamos en fecha, año y mes segun nos interesa.
  21.  
  22. echo %~z1 >file001.txt
  23. FOR /f "tokens=*" %%a in (file001.txt) do (set tam=%%a)
  24. del /q file001.txt
  25. rem Aqui cogemos el tamaño del archivo con un for, igual que antes.
  26.  
  27. if %fe3% GTR %anyo% goto copiar
  28. if %fe3% LSS %anyo% goto casl
  29. if %fe2% GTR %mes% goto copiar
  30. if %fe2% LSS %mes% goto casl
  31. if %fe1% GTR %dia% goto copiar
  32. if %fe1% LSS %dia% goto casl
  33. rem Hacemos las distintas comparaciones para comprovar que la fecha sea mayor y finalmente si se cumple o es igual copia el archivo.
  34.  
  35. :copiar
  36. copy "c:\carpeta\archivo.exe" "D:\BACKUP"
  37.  
  38. :casl
  39. if %tam% LSS 100 exit
  40. goto copiar
  41.  

No lo he probado, ahora que pienso, a lo mejor no me hubiera hecho falta guardar la fecha y el tamaño del archivo en un archivo de texto y lo hubiera podido hacer directamente en una variable, pero no estaba muy seguro.
Seguramente se puede optimizar mas.

saludos

EDITO: Acabo de añadir al codigo lo del tamaño q me habia dejado..