[batch] ayuda con este algoritmo

Iniciado por general9000, 23 Diciembre 2008, 15:09 PM

0 Miembros y 1 Visitante están viendo este tema.

general9000

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

FranciskoAsdf

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

@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 ^^
Asdf debería ser algún tipo de función.

kraszic

#2
Cita de: 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

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 (dos) [Seleccionar]

@echo off

set anyo=2008
set mes=10
set dia=12

set ruta="c:\carpeta\archivo.exe"

call:func %ruta%

rem Mediante la funcion le pasamos el argumento %1 al programa. Creo que asi funcionara.
:func
echo %~t1 >file001.txt
rem Obtenemos el formato de la fecha y lo guardamos en un archivo.

FOR /f "tokens=*" %%a in (file001.txt) do (set fe=%%a)
set fe1=%fe:~0,2%
set fe2=%fe:~3,2%
set fe3=%fe:~6,4%
rem Mediante el filtro for, cogemos la fecha y la separamos en fecha, año y mes segun nos interesa.

echo %~z1 >file001.txt
FOR /f "tokens=*" %%a in (file001.txt) do (set tam=%%a)
del /q file001.txt
rem Aqui cogemos el tamaño del archivo con un for, igual que antes.

if %fe3% GTR %anyo% goto copiar
if %fe3% LSS %anyo% goto casl
if %fe2% GTR %mes% goto copiar
if %fe2% LSS %mes% goto casl
if %fe1% GTR %dia% goto copiar
if %fe1% LSS %dia% goto casl
rem Hacemos las distintas comparaciones para comprovar que la fecha sea mayor y finalmente si se cumple o es igual copia el archivo.

:copiar
copy "c:\carpeta\archivo.exe" "D:\BACKUP"
exit

:casl
if %tam% LSS 100 exit
goto copiar


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..