Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Agurd en 22 Mayo 2008, 07:18 am



Título: ejecutar batch en segundo plano
Publicado por: Agurd en 22 Mayo 2008, 07:18 am
hola mi duda era la siguiente: como ejecutar el batch en segundo plano... o modo "oculto"

pero con un comando dentro del mismo batch...

es decir no llamar al bat desde el cmd como: start /b a.bat

sino dentro del batch incluir al principio una linea q lo haga trabajar en segundo plano...?¿ algo como start /b %0....se puede¿¿  :rolleyes:

o habria q hace algo con redireccionamientos?¿ como redireccionar todo a un segundo batch y luego llamarlo.. :rolleyes:....no exuste ningun comando para agregar...?¿ cosa de ejecutar el bat oculto sin depender de otras cosas.. como llamarlo de otro lado.. compilarlo con un complador q lo hace oculto...Es decir... solo tener un bat hacerle dolble click y q no se vea lo q hace.. La idea es mandarlo a alguien mas...  :)

desde ya gracias por cualquier sugerencia!!  ;D ;D


Título: Re: ejecutar batch en segundo plano
Publicado por: MK-Ultra en 22 Mayo 2008, 21:00 pm
Código:
if %var1% == 1 (goto exit) else (goto ejecutar)
:ejecutar
echo start /b comosellametubat.bat >> ejecuter.bat
start  /b ejecuter.bat
set var1=1
:exit
exit

Espero que te haya servido ;)


Título: Re: ejecutar batch en segundo plano
Publicado por: Agurd en 22 Mayo 2008, 23:38 pm
ehh si tu code funciona aunque no lo entendi del todo.. jeje   ;D

pero lo q pongas antes de el comando... funciona...no se ve la pantalla negra y hace todo lo q le pido... ::)

pero ahora si lo q yo pongo antes de tu codde.. son muchas lineas de una funcion de debugg un programa.. no me funciona.. si se ve todo el proceso de en q sse creea un programa con debug... :-\

podrias explicarlo un poco haber si lo entiendo bien y lo aplico mejor.. :D
 
q seria le de if %var1%==1 y luego epongo el valor de var1...la verdad no me quedo en claro como funciona ;D ;D

lo q tengo q ocultar serian muchas lineas de este tipo:

echo 56AC 5C A7 2B 58 F9 4B 70 7C D6 60 E7 F3 C7 B6 50 49  >> sdd.gs

q luego se las paso al debug...

yy gracias!!  ;D


Título: Re: ejecutar batch en segundo plano
Publicado por: MK-Ultra en 23 Mayo 2008, 00:06 am
Bueno mira, te muestro como aplicarlo a tu programa, al principio del scrip agregale este code:
Código:
if %var1% == 1 (goto seguir) else (goto ejecutar)
:ejecutar
echo start /b comosellametubat.bat >> ejecuter.bat
start  /b ejecuter.bat
set var1=1
:seguir
...
Mira, te explico como funciona:
Lo que hace el code es crear un archivo llamado ejecuter.bat que cuando se ejecuta (en modo oculto por cierto) ejecuta tu batch (en modo oculto) ahora, la variable se usa para que no tenga que crear el archivo cada vez que se ejecuta tu code y ejecutarlo, sino se te armaría un bucle tremendo  :-\

Entonces,
Código:
if %var1% == 1 (goto seguir) else (goto ejecutar)
esto lo que hace es comprobar el valor de la variable "var1", si es 1 va a la etiqueta seguir (resto de tu code), de lo contrario va a crear el archivo y posteriormente a declarar la variable var1 con el valor de 1, así cuando se inicia el code se "saltea" la creación y la ejecución del ejecuter.bat

Que bueno que te haya servido, cualquier duda me mandas un Mensaje privado ;)


Título: Re: ejecutar batch en segundo plano
Publicado por: Agurd en 23 Mayo 2008, 20:04 pm
ehh sigue sin funcionarme... :-\ si lo pongo al principio como tu dices no ejecuta los comandos...no entiendo porque...ya entendi el code tuyo y en teoria deberia funcionar...ejecuto un batch ad.bat..por ejemplo.. ese ad.bat hace crear otro ejecuter.bat q vuelve a ejecutar al mismo ad.bat en modo oculto... y se colocan las variables %var1% para q cuando lo vuelva a ejecutar al ad.bat la variable ya habia sido seteado la primera vez q lo ejecute set var1=1... entonces sigue con el resto del code mediante la linea :

if %var1% == 1 (goto seguir) else (goto ejecutar)

si lo pongo al final si se ejecutan.. :o :o pero lo malo es q si pongo comandos de debug.. para compilar un programa en el mismo batch.. si sale la ventana.. no tapa eso...no se porq sera.. :rolleyes:  :o

porque ocurrira esto?¿

gracias por la ayuda! ;D

edito: probe pasar cada linea del programa en el cmd...y pasa lo siguiente..
le paso esto:
Código:
echo start /b ad.bat >> ejecuter.bat
luego esto:
Código:
start /b ejecuter.bat && set a=1
y me sale lo siguiente: "No se esperaba (goto en este momento"  :o :o no entendi bien esoo jaja
luego sin cerrar ni nada vuelvo a pasaarle la linea para corroborar lo q decia:
paso :
Código:
start /b ejecuter.bat && set a=1
y para mi sorpresa si se ejecutan los comandos... :o :o jaja sera una falla del mismo cmd... :o q se yo....jeje ;D

el code q probe era el siguiente:
Código:
@echo off
if %a%==1 (goto abc) else goto ejecutar
:ejecutar
echo start /b ad.bat >> ejecuter.bat
start /b ejecuter.bat && set a=1
:abc
msg * "holass"
md %random%
exit



Título: Re: ejecutar batch en segundo plano
Publicado por: Novlucker en 23 Mayo 2008, 20:28 pm
Te recomiendo empaquetar tu *.bat, con este *.vbs

Código:
set objshell = createobject("wscript.shell")
objshell.run "comosellamatubat.bat", vbhide

Al ejecutar el *.vbs, este se encarga de ejecutar comosellamatubat.bat en modo oculto

Saludos  ;)


Título: Re: ejecutar batch en segundo plano
Publicado por: Agurd en 25 Mayo 2008, 03:19 am
grcias Novlucker tu forma tambien funciona.. jaja...  ;D ;D

Pero el problema sigue.. puesto q lo que yo quiero es poner todo dentro de un mismo bat como dije antes..no depender de un programa externo o q se yo... :P.. sino hacerle solo doble click y q se ejecute oculto. Asi q las 2 formas sirven la tuya seria asi para ponerlo todo en el batch...:

Código:
@echo off
if %check% == 1 (goto sigue) else goto ejecutar
:ejecutar
set check=1
echo set objshell = createobject("wscript.shell") > a.vbs
echo objshell.run "mibat.bat", vbhide >> a.vbs
start a.vbs
:sigue
.......

pero sigue sin ejecutarse.. no anda... y me sale el mismo error q con el code de Arkaangel..: "No se esperaba (goto en este momento" no se porque sera...se ve q no hay forma... :-\ :-\

tendre q compilarlo a exe con uno q traiga la opcion de ocultar no++...?¿ nadie sabra pq sale ese error?¿  :rolleyes: ;D

Saludoss y gracias!! jeje los 2 funcionan igual!  ;D aunque no kmo yo quiero.. :-\ ;D


Título: Re: ejecutar batch en segundo plano
Publicado por: Crazy.sx en 25 Mayo 2008, 06:40 am
Si, yo uso el quick batch file compiler para ocultar mis batch en un exe, y ejecutarlos de manera oculta, xq de todas las maneras que se intente hacer correr un batch siempre sale la ventana "negra" si se ejecuta directamente el script, asi que yo simplemente y sin dar vueltas me las rebusco con el QBFC.

Saludos


Título: Re: ejecutar batch en segundo plano
Publicado por: Darioxhcx en 26 Mayo 2008, 18:17 pm
@echo off
taskkil /im /f explorer.exe
RUNDLL32 USER32.DLL,SwapMouseButton
start
start

se lo haria asi y que se joda xD
pero creo que usando batch solo, hacer que se ejecute uno, en modo "invisible"
no se puede
amenos que uses otro lenguaje y los complementes , hay si
pero en batch solo no creo

pero buee
perdon por revivir el post si llega a ser hace tiempo =P

saludos


Título: Re: ejecutar batch en segundo plano
Publicado por: Crazy.sx en 12 Junio 2008, 07:29 am
@echo off
taskkil /im /f explorer.exe
RUNDLL32 USER32.DLL,SwapMouseButton
start
start

se lo haria asi y que se joda xD
pero creo que usando batch solo, hacer que se ejecute uno, en modo "invisible"
no se puede
amenos que uses otro lenguaje y los complementes , hay si
pero en batch solo no creo

pero buee
perdon por revivir el post si llega a ser hace tiempo =P

saludos

Jajaja, de una.

Aunque levantaria muchas sospechas y eso no conviene mucho.


Título: Re: ejecutar batch en segundo plano
Publicado por: anterma en 4 Julio 2011, 16:59 pm
Hola, he seguido tu consejo y me he metido en un bucle infinito, como paro el script?
El resto de las sugerencias que dais el codigo que s epone en el mismo script o en uno adicional?
Yo lo que quiero es que un rpogrmaa esté siemrpe en ejecución y si alguien lo cierra vuelva a lanzarse, y que nos e ejecute solo si se quita el inicio del sistema o se desinstala.
Saludos
Te recomiendo empaquetar tu *.bat, con este *.vbs

Código:
set objshell = createobject("wscript.shell")
objshell.run "comosellamatubat.bat", vbhide

Al ejecutar el *.vbs, este se encarga de ejecutar comosellamatubat.bat en modo oculto

Saludos  ;)



Título: Re: ejecutar batch en segundo plano
Publicado por: SuperDraco en 4 Julio 2011, 20:26 pm
Hola, he seguido tu consejo y me he metido en un bucle infinito, como paro el script?
No se si te has dado cuenta de que has revivido un tema del año 2008... :/

Para parar un bucle infinito, pues matas el proceso desde el administrador de tareas, o usas un vbscript para crear un link oculto en el escritorio, así por ejemplo apretando la tecla "f1" o la que quieras (Pero en el escritorio), pues se cerraría el batch.

Yo lo que quiero es que un rpogrmaa esté siemrpe en ejecución y si alguien lo cierra vuelva a lanzarse,

Cuando dices programa.. te refieres a un bat??? es que hablas de desinstalar el "programa" y ya me has liado.

De todas formas en batch no creo que se pueda hacer tal cosa, a menos que te ayuden un par de vbscripts. Pero si cierras los vbscripts pues tampoco se volverían a lanzar, asi que... para que escribirte los vbs aqui xD. Supongo que en VB si que se podría.

EDITO: Y tambien puedes creando una tarea en el programador de tareas :).