Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Shinseiki86

#1
Scripting / Re: Renombrar archivos [batch]
28 Octubre 2009, 21:52 PM
Lo de Corax debe funcionar... pero cuando ejecutes el script, debes tener el bat en la misma carpeta donde estan los archivos .log
#2
Hice lo siguietne y con eso ya tengo todo solucionado:

Creé un autoextraible con el .lnk y lo coloqué para que se descomprima en una carpeta temporal y se ejecute al terminar. Luego con el .vbs ejecuto el .exe y listo...
#3
Scripting / Re: [BATCH] problema con código
28 Octubre 2009, 21:43 PM
Ok, estoy haciendole pruebas nuevamente y le he encontrado errores...  :-[

1. La variable varmes se define asi:

... set /a varmes=%date2:~3,2%-%tmp:~3,2%

El problema es que si el archivo es de sept y lo verificas ahora en octubre, te sale error ya que set /a varmes=10-09.

Yo hago lo siguiente en esos casos:
   if %date:~-7,1% EQU 0 (set /a mes_act=%date:~-6,1%) else (set /a mes_act=%date:~-7,2%)
   if %date:~-10,1% EQU 0 (set /a dia_act=%date:~-9,1%) else (set /a dia_act=%date:~-10,2%)

Prueba con lo siguiente y nos comentas como te va.


@echo off
:recordador1
If not exist "%homedrive%\marca.txt" (
echo. >C:\marca.txt
goto recordador2
) else (
call:datos C:\marca.txt
goto:eof
)

:datos
:: Fecha actual
set anno_act=%date:~6,4%
if %date:~-7,1% EQU 0 (set /a mes_act=%date:~-6,1%) else (set /a mes_act=%date:~-7,2%)
if %date:~-10,1% EQU 0 (set /a dia_act=%date:~-9,1%) else (set /a dia_act=%date:~-10,2%)

::Fecha archivo
set tmp=%~t1
set anno_arch=%tmp:~6,4%
if %tmp:~3,1% EQU 0 (set /a mes_arch=%tmp:~4,1%) else (set /a mes_arch=%tmp:~3,2%)
if %tmp:~0,1% EQU 0 (set /a dia_arch=%tmp:~1,1%) else (set /a dia_arch=%tmp:~0,2%)


set /a dif_anno=%anno_act%-%anno_arch%

If %dif_anno% EQU 0 set /a difer_mes=%mes_act%-%mes_arch%
If %dif_anno% EQU 1 set /a difer_mes=(%mes_act%+12)-%mes_arch%
If %dif_anno% GEQ 2 (goto tiempo1)
If %difer_mes% EQU 0 set /a difer_dia=%dia_act%-%dia_arch%
If %difer_mes% EQU 1 set /a difer_dia=(%dia_act%+30)-%dia_arch%
If %difer_mes% GEQ 2 (goto tiempo1)
If %difer_dia% LSS 20 (goto recordador2) else (goto tiempo1)
goto:eof

:tiempo1
echo   Ya han pasado 22 o m s d¡as.
echo   Por favor, haga un backup de las bases de datos.
del /q /f "C:\marca.txt"
echo. >C:\marca.txt
goto recordador2

:recordador2
echo estamos en recordador2
pause>nul
goto:eof
#4
Scripting / Re: Crackme mejorado
28 Octubre 2009, 18:19 PM
Pues...
Primero me salió error por
0x0%pass:~0,1% >null

Lo cambié a nul... pero sigue saliendo error...

CitarNúmero no válido . Las constantes numéricas son decimales(17),
hexadecimales (0x11), u octales (021).
Número no válido . Las constantes numéricas son decimales(17),
hexadecimales (0x11), u octales (021).
Número no válido . Las constantes numéricas son decimales(17),
hexadecimales (0x11), u octales (021).
Número no válido . Las constantes numéricas son decimales(17),
hexadecimales (0x11), u octales (021).
Número no válido . Las constantes numéricas son decimales(17),
hexadecimales (0x11), u octales (021).
"0x01" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
Falta operando.
No se esperaba (echo en este momento.
#5
Scripting / Re: [BATCH] problema con código
28 Octubre 2009, 18:01 PM
El code que te coloqué me funciona... no se si es que necesitas algo extra... Ejecutalo y nos contás.

Sobre una forma mas eficaz... la verdad no la veo... Necesitas tener una forma de saber cuando fue la ultima vez que se ejecutó, y eso solo lo haces con un archivo temporal que guarde la fecha... o si no... modificando el registro, creando una entrada que guarde la fecha de la ultima ejecución.. pero tiene inconvenientes:
1. El usuario debe tener permisos para modificar el registro.
2. Modificar el registro puede ser peligroso en manos inexpertas. (Lo es hasta en manos expertas...)
#6
Scripting / Re: [BATCH] problema con código
28 Octubre 2009, 15:20 PM
La razón del problema es que el comando call llama un procedimiento y luego retorna al punto donde se ejecutó (soy malo para explicar  ;D)

@echo off
:recordador1
If not exist "%homedrive%\marca.txt" (
echo >C:\marca.txt
goto recordador2
) else (
cd /d "C:\"
call:datos marca.txt
)

:datos
set tmp=%~t1
set /a varanno=%date:~6,4%-%tmp:~6,4%
If %varanno% EQU 0 set /a varmes=%date:~3,2%-%tmp:~3,2%
If %varanno% EQU 1 set /a varmes=(%date:~3,2%+12)-%tmp:~3,2%
If %varanno% GEQ 2 (goto tiempo1)
If %varmes% EQU 0 set /a vardia=%date:~0,2%-%tmp:~0,2%
If %varmes% EQU 1 set /a vardia=(%date:~0,2%+30)-%tmp:~0,2%
If %varmes% GEQ 2 (goto tiempo1)
If %vardia% LSS 20 (goto recordador2) else (goto tiempo1)
goto:eof

:tiempo1
echo   Ya han pasado 22 o m s días.
echo   Por favor, haga un backup de las bases de datos.
del /q /f "C:\marca.txt"
echo >C:\marca.txt
goto recordador2

:recordador2
echo estamos en recordador2
pause>nul
goto:eof
#7
Ok, lo modifique y si creo que funcione como necesito... Si es el ultimo evento programado, se le resta uno para que regrese al principio.

Coloqué fechas en desorden pero solo como prueba. Realmente colocaría los valores en orden.

Si mi hija nace hoy... me voy de vacas, asi que dentro de un mes informo como ha funcionado.

Gracias Novlucker! Fenomenal tu ayuda!
#8
mmm.. pues hice la prueba mdoficando la lista y colocandola en desorden para ver si funcionaba... pero por ejemplo:

Selecthora = "14.15,14.20,14.18"

Se ejecutó a las 14:15 y a las 14:18, pero no a las 14:20...

Supongo que si se evalúa la lista.. no debe importar el orden... ¿o si?.

Lo voy a dejar hoy en ejecución para ver si mañana se ejecuta sin problemas.
Gracias!
#9
Necesito otra ayuda.

Necesito que el script no se cierre... asi que comenté el segundo if

Do
wscript.sleep 30000
new_task_event = match_hour(hour(now()),minute(now()))
if new_task_event > task_event then
task_event = new_task_event
objshell.run comando ', vbhide  'Para ocultar el progrma ejecutado
'if task_event=ubound(horas) then     'Cierra el script si no hay mas horas programadas
' wscript.quit
'end if
end if
Loop


Pero además necesito que cuando termine, se repita al dia siguiente con las mismas horas programadas.

La idea es no apagar el pc y que a las 5.30 se ejecute solo otra vez.
#10
Pues... la necesidad de hacerlo desde el lnk es porque el bat tiene dimensiones e icono preconfigurado... mejor dicho... es por puro capricho...   ;D