Comando AT (Batch)

Iniciado por MK-Ultra, 22 Enero 2008, 15:00 PM

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

nhaalclkiemr

Mira hace un tiempo hice un lanzador de aplicaciones SYSTE;...te servirá para lo que quieres:

Código (dos) [Seleccionar]
@echo off
:: Ejecutar una aplicación como SYSTEM
:: Puedes ejecutarla inmediatamente o programarla para cuando quieras
:: Tal como está el codigo está programado para ejecutar al intantante la aplicación
:: Borra los comentarios REM para ahorrar codigo y fijate en lo que pone
:: By nhaalclkiemr
set a=0
set z=%TIME:~0,2%
if "%TIME:~0,1%"==" " set z=0%TIME:~1,1%
if "%TIME:~8,1%"=="," goto normal
if "%TIME:~10,1%"=="," goto 2caso
if "%TIME:~12,1%"=="," goto 3caso
:normal
set x=%TIME:~3,2%
goto a
:2caso
set x=%TIME:~4,2%
goto a
:3caso
set x=%TIME:~5,2%
:a
set /A a=%a%+1
if "%x%"=="08" set x=8
if "%x%"=="09" set x=9
if "%a%"=="1" set /A x=%x%+1
REM El segundo 1 especifica el tiempo en minutos que tardará en ejecutarse la aplicación, es modificable
REM Solo se puede sumar como máximo 86400 minutos, de lo contrario pueden producirse errores
:e
if %x% GTR 59 set /A z=%z%+1
if %z% GTR 23 set /A z=%z%-24
for /L %%A in (0,1,9) do if "%z%"=="%%A" set z=0%z%
if %x% GTR 59 set /A x=%x%-60
if %x% GTR 59 goto e
at.exe %z%:%x% AQUITUPROGRAMA.EXE
REM En lugar de lo anterior puedes poner lo siguiente si quieres que la aplicacion sea visible:
REM at.exe %z%:%x% /interactive AQUITUPROGRAMA.EXE
REM %z% y %x% son la hora y los minutos a los que se ejecutará la aplicación, puedes poner otra cosa si quieres
if %a%==11 goto b
if not %errorlevel%==0 goto a
schtasks /run /tn at1
REM Esta ultima linea ejecuta inmediatamente la aplicación, si la estás programando para una hora determinada borra esta linea
exit
:b
set a=0
if %x% LEQ 9 set x=0%x%
:c
set /A a=%a%+1
schtasks /create /tn temp /tr AQUITUPROGRAMA.EXE /sc once /st %z%:%x%:00 /ru System
REM Esto se ejecutará en caso de que el comando AT falle, es un intento alternativo, de esta manera no se puede hacer visible
if %a%==11 goto error
if not %errorlevel%==0 goto c
schtasks /run /tn temp
REM Esta ultima linea ejecuta inmediatamente la aplicación, si la estás programando para una hora determinada borra esta linea
exit
:error
:: Aqui va el BAT que se ejecuta en caso de que se produzca un error


Fijate en los comentarios REM...sobre todo la que pone:

REM El segundo 1 especifica el tiempo en minutos que tardará en ejecutarse la aplicación, es modificable

Ya me dirás...

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

MK-Ultra

esta buena pero lo que necesito es una en el que el usuario sea el que le trasmita los datos, osea que tegno una variable modificable por el usuario, digamos que el usuario le dice a la maquina el tiempo de cuenta regresiva.

Muchas gracias = ;)
Agradecer no cuesta nada (al menos no mucho)

BTC: 1DHKsWE6wGkUiHbKkwBDaF8DEGwn9n6nxQ

nhaalclkiemr

Pues modifica esta linea:

Código (dos) [Seleccionar]
if "%a%"=="1" set /A x=%x%+1

así:

Código (dos) [Seleccionar]
if "%a%"=="1" set /A x=%x%+%1

y llamas al BATCH con sintaxis:

mibat.bat [minutos]

o si prefieres puedes preguntar:

Código (dos) [Seleccionar]
set /p minut= Escribe el tiempo en minutos a esperar

y la primera linea que puse que había que modificar en vez de ponerla como puse arriba la pones así:

Código (dos) [Seleccionar]
if "%a%"=="1" set /A x=%x%+%minut%

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

43H4FH44H45H4CH49H56H45H

#13
Cita de: ^Arkangel^ en 23 Enero 2008, 13:37 PM
El programa seria mas o menos como que el usuario ingresa X minutos y apartir de ese tiempo cuando terminen esos X minutos se ejecute un comando.

Me explico?

PD: = estubo bueno el programa anterior pero no era exactamente lo que estaba buscando. Gracias de todos modos ;)

A bueno en ese caso si solo se ejecutaria una vez y tendria como variable el numero de minutos que el usuario ingresaria para que el programa espere a ejecutar la orden una vez nada mas lo podria hacer asi:
@echo off
TITLE UTILIZANDO FOR PARA VARIABLES DE TIEMPO Y AT CODELIVE
COLOR 0F
TIME /T >C:\1.TXT
SET VAR=
FOR /F "eol=; tokens=2,2* delims=: " %%i in (C:\1.txt) do set VAR=%%i
SET VAR1=
FOR /F "eol=; tokens=1,2* delims=: " %%i in (C:\1.txt) do set VAR1=%%i
SET VAR2=
FOR /F "eol=; tokens=2,2* delims= " %%i in (C:\1.txt) do set VAR2=%%i
set /p dame= Cuantos minutos pasaran antes de realizar la tarea?
set /a r=%VAR%+%dame%
AT %VAR1%:%r%%VAR2% msg * Reportandome
pause


Aqui faltaria corregir el rango si la suma pasa de 59 lo cual haria que el comando AT marque error, seria bueno utilizar una formula matematica para restar la cantidad sobrante cuando pasa de 59 - extraerla para sumarla a 00 para quedar en el rango de 00-59, tb hay que corregir el uso de "0" antes de la variable "r" si esta es menor a 10 y tb un error si no ingresa algun numero, en si varias cosas solo es un pequeño ejemplo rapido  :P
Creo que if seria de ayuda para la correcion de errores  :o

Editado:
Me olvide que mi formato de hora es 11:00p.m. por eso la variable VAR2 si fuese el formato 23:00 quitariamos esa variable y seria mas sencillo la forma de hacerlo  :P

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W