Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Dsalomon en 30 Agosto 2012, 07:25 am



Título: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Dsalomon en 30 Agosto 2012, 07:25 am
hol amigos... les saludo desde Guatemala... la verad es que estoy varado en una labor

estoy armando un proyecto que va asi:


1. un script que busque en la carpeta y subcarpeta un archivo ejecutable en donde este... no en C: u otra unidad...
2. correr este ejecutable
3. minimizar el programa con las teclas Alt+Espacio+N (por que este programa no obedece las opciones de iniciar minimizado /m)


probe asi pero no doy con la linea adecuada:


Código:
@echo off
%Cd%
for /d /r %%_ in (*) do (
if exist "%%_\Barra.exe" (
Start Barra.exe
)
)
exit


y tambien se me ocurrea algo mas simple:

Código:

@echo off
START /D  /S Barra.exe
exit

el codigo para correr Alt+Espacio+N no lo encuentro...  :-(


agradecere cualquier sugerencia...





Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Eleкtro en 30 Agosto 2012, 08:42 am
este programa no obedece las opciones de iniciar minimizado /m
El parámetro es "/MIN", no "/M", ¿Estás seguro de haberlo comprobado escribiendo el parámetro que te dije?.

De todas formas estás utilizando mal el FOR y el START en la condicional, Con esto es suficiente:

Código
  1. @echo off
  2. FOR /R %%_ in (*barra.exe) do ("%%_")

No puedes enviar pulsaciones de teclado usando Batch, Pero puedes recurrir a algo tán sencillo como VBS:

Código
  1. @echo off
  2.  
  3. Set WAIT=2000
  4. :: WAIT = Los milisegundos de espera antes de que la aplicación "barra.exe" se termine de cargar.
  5. :: Si la aplicación no está cargada, Mandar la combinación de teclas no sirve para nada...
  6.  
  7. FOR /R %%_ in (*barra.exe) do (Start /B CMD /C "%%_")
  8.  
  9. (
  10. Echo wscript.Sleep %WAIT%
  11. Echo Set oWSH = CreateObject^("WScript.Shell"^)
  12. Echo oWSH.SendKeys "%% N"
  13. )>"%TEMP%\sendkeys.vbs"
  14.  
  15. Start /B wscript "%TEMP%\sendkeys.vbs"
  16.  

Saludos


Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Valium7 en 30 Agosto 2012, 16:47 pm
¿Alguien explica las lineas mas importantes?cuando busca el file no veo xD


Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Eleкtro en 30 Agosto 2012, 17:35 pm
¿Alguien explica las lineas mas importantes?cuando busca el file no veo xD

Código
  1. FOR /R %%_ in (*barra.exe) do ("%%_")

El comando busca en las subcarpetas del directorio actual todos los archivos que contengan en su nombre "barra.exe", Y guarda la ruta completa del file encontrado en la variable "%%_", Y luego ejecuta el file.

Espero haberte aclarado la duda ::)

Saludos


Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Dsalomon en 1 Septiembre 2012, 10:38 am
eres la ley... bueno el codigo...
perdona la insistencia me podrias explicar como personalizar el VBS, la verdad no tengo experincia con ese lenguaje... pero me gustaria saber como decirle que teclas exactamente corra para poder decirle que haga mas cosas, ademas me gustaria quitar el mensaje de que el archivo no fuen encontrado, por si muevo a otra ubicacion el batch... muchas gracias... por tu tiempo y corrección, seguimos aprendiendo...


Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Eleкtro en 1 Septiembre 2012, 12:44 pm
me podrias explicar como personalizar el VBS, me gustaria saber como decirle que teclas exactamente corra
http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send.aspx
Ahí tienes la referencia de las teclas especiales. Si quieres enviar teclas alfabéticas solo tienes que escribirlas tal cual.

Te explico el code de antes por si te ayuda a entenderlo mejor:
Código
  1. Echo oWSH.SendKeys "%% N"
% equivale a "ALT"    (Pero uso dos %% solamente para poder escribir el simbolo en el archivo.)
(un espacio) equivale a "ESPACIO"
N equivale a "N"
PD: Si no te funciona, haz la combinación de teclas así:
Código
  1. Echo oWSH.SendKeys "%%( N)"

me gustaria quitar el mensaje de que el archivo no fuen encontrado
¿Que mensaje? :xD A mi no me sale ninguno :-/, ¿Cuando te aparece ese mensaje?


Saludos


Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Dsalomon en 1 Septiembre 2012, 12:48 pm
¿Teacher se puede especificar que ventana solo por el nombre de la misma para minimizar?


creo que entendi asi:

1.   Le dice que tiene que esperar a cargar la aplicación “MIPROGRAMA.exe”

2.   Busca los archivos que se llamen “MIPROGRAMA.exe” dentro de las carpetas y subcarpetas y guarda el nombre del archivo en una variable

3.   Inicia la consola de Windows en la misma ventana e ejecuta lo que encontró y guardo en la variable %%_ y lo inicia, o sea corre el programa deseado

4.   Después en código le dice que espere

5.   Después crea un código VBS

6.   Envía las teclas Alt+espacio+N  (%% N) No entiendo bien pero pareciera %%  que son 2 veces ALT

7.   Envía lo que se escribió a un archivo temporal llamado Sendkeys.vbs

8.   En la misma ventana de consola llama al Script Sendkeys.vbs


y si quisiera que en lugar de ALT+barra+N fuere Control+N.... (para otra aplicacion)

por que probe asi

Código:
"%^( N)"

y asi

Código:
"^( N)"


pero no me funciono



Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Dsalomon en 1 Septiembre 2012, 13:36 pm
teacher:  todo se ejecuta correctamente pero la ventana del DOS queda abierta... como podria solucionar esto...

tambien pregunto como hago para que borre en automatico el archivo temporal que crea...?


Gracias por tu ayuda hasta ahora todo va marchando bien gracias a tu intervencion...


Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Eleкtro en 1 Septiembre 2012, 14:53 pm
¿Teacher se puede especificar que ventana solo por el nombre de la misma para minimizar?
Puedes activar la ventana:
Código
  1. Set objShell = WScript.CreateObject("WScript.Shell")
  2. objShell.AppActivate "TITULO DE LA VENTANA"
PD: O usando aplicaciones de terceros como CMDOW o NIRCMD en batch.

Control+N
Código
  1. objShell.SendKeys "^N"
PD: También puedes usar NIRCMD para enviar combinaciones.

teacher:  todo se ejecuta correctamente pero la ventana del DOS queda abierta... como podria solucionar esto...
Prueba así:
Código:
FOR /R %%_ in (*barra.exe) do (Echo "%%_"| Find " " >NUL && (Start /B "%%_") || (Start /B %%_))

tambien pregunto como hago para que borre en automatico el archivo temporal que crea...?
Código:
DEL /?

Saludos


Título: Re: Batch que busque un archivo y lo ejecute y ejecutar combinaciones del teclado...
Publicado por: Dsalomon en 3 Septiembre 2012, 10:41 am
que hago si no uso Windows 7

yo uso XP Sp3 tambien...

para esperar

Código
  1. SET WAIT=2000
  2. Echo wscript.Sleep %WAIT%

O como usar

Código
  1. ping -n 05 localhost>nul


por ejemplo aqui tengo un exctracto de codigo en donde

1. le digo busque el proceso de VIDEOPLAYER o sea "proceso"

2. y sino lo encuentra ejecute el programa Ds clock...

3. Espere a que carque un proceso antes de ejecutar el otro

4. si lo encuentra no haga nada

5. haga un Loop por si en cualquier momento se cierra el VIDEOPLAYER muestre el reloj

 

pero el problema es que el programa Ds Clock carga rapido y el otro carga lento

Código
  1. set proceso=VIDEOPLAYER.exe
  2.  
  3. tasklist | find "%proceso%" >nul
  4. if %Errorlevel% == 1 (START /D "%Programfiles%\DS Clock\" dsclock.exe)
  5.