Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: *LaPerla en 3 Marzo 2010, 13:52 pm



Título: Como prodria hacer esto en batch??
Publicado por: *LaPerla en 3 Marzo 2010, 13:52 pm
hola amigos.
soy nuevo por aqui y me gustaria que me acharais una mano.
necesito hacer un batch que al abrirse.

ejecute 4 programas en este orden yt hacer posible que se demore 15 segundo entre aplicacion.
 
WampServer
DynDns
Batch 1
Batch 2

no se de donde sacar informacionpara hacer esto y la verdad n ose si se podra hacer.
gracias de antemano!
saludo!


Título: Re: Como prodria hacer esto en batch??
Publicado por: fary en 3 Marzo 2010, 14:58 pm
muy facil lo puedes acer mezclando batch con vbscript.. con codigo batch usar start para iniciar la aplicacion y con el sleep del vbscript esperas los segundos que quieras...


salu2!


Título: Re: Como prodria hacer esto en batch??
Publicado por: flony en 3 Marzo 2010, 15:09 pm
Código:
@echo off

start programa1.exe
ping -n 15 127.0.0.1

start programa2.exe
ping -n 15 127.0.0.1

cd C:\...
start bat1
ping -n 15 127.0.0.1

cd C:\...
start bat2
ping -n 15 127.0.0.1

primitivo pero siempre me funciono en donde dice programa pone el nombre con el exe y en bat el nombre que le pusiste...lo de cd C:\...antes del start es para q se ubique bien la maquina...dicen q no hace falta...pero es mejor asi


Título: Re: Como prodria hacer esto en batch??
Publicado por: ---saster--- en 3 Marzo 2010, 15:48 pm
con for en una linea

Código
  1. @for %%a in (programa1,programa2,programa3,programa4) do (start "" "%%a"&ping localhost -n 15 >nul 2>&1)

el ping no es exacto asi que si quieres sacar el tiempo lo puedes hacer de la variable time y hacer un bucle


Título: Re: Como prodria hacer esto en batch??
Publicado por: flony en 25 Marzo 2010, 12:52 pm
si el ping no es exacto porque lo usas en tu for?....segundo lo de tomar l time y hacer un bucle en bat toma mas tiempo que perder unas milesimas de segundo q puede tener de diferencia un ping


Título: Re: Como prodria hacer esto en batch??
Publicado por: ---saster--- en 25 Marzo 2010, 15:43 pm
bueno el ping no es exacto pero es lo mas sencillo de utilizar, dije lo del time porque a lo mejor quería 15 seg exactos y no aproximadamente

puede ser algo asi el bucle

Código
  1. @echo off
  2. :menu
  3. (set var,b,seg,seg2=)
  4. cls
  5. echo Principio:
  6. set /p seg=
  7. if not defined seg (goto menu)
  8. if %seg% LEQ 0 (goto menu)
  9. echo Final:
  10. set /p seg2=
  11. if not defined seg2 (goto menu)
  12. if %seg2% LEQ %seg% (goto menu)
  13. cls
  14. :a
  15. set var=%time:~6,2%
  16. set b=%var%
  17. :b
  18. set var=%time:~6,2%
  19. if %var%==%b% (goto b) else (
  20. set /a "seg+=1"
  21. echo %seg%
  22. if %seg%==%seg2% (pause>nul&goto menu) else (goto a)
  23. )

se puede mejorar, pero funciona   ¬¬



Título: Re: Como prodria hacer esto en batch??
Publicado por: xassiz_ en 25 Marzo 2010, 17:02 pm
si el ping no es exacto porque lo usas en tu for?....segundo lo de tomar l time y hacer un bucle en bat toma mas tiempo que perder unas milesimas de segundo q puede tener de diferencia un ping
El ping no es exacto por que ahi le indicas un numero de paquetes a enviar, no un numero de segundos.

PD: este tema va en Scripting


Título: Re: Como prodria hacer esto en batch??
Publicado por: flony en 26 Marzo 2010, 12:14 pm
la semtaxis es ping -n 15 127.0.0.1
ping comando
-n 15 le doy quince intentos de aprox 1 segundo cada uno
y la direccion 127.0.0.1 es la localhost
Citar
http://es.wikipedia.org/wiki/Localhost
lo vas a encontrar en la carpeta....me canse de buscarla pero esta en C:\windows....busca es un archivo tonto y sirve para
Citar
http://es.wikipedia.org/wiki/Localhost


Título: Re: Como prodria hacer esto en batch??
Publicado por: ---saster--- en 26 Marzo 2010, 16:55 pm
el ping sería mas sencillo pero no es exacto


lo que el quiere se puede hacer perfectamente en una linea con un ping y no tener que liarte en extraccion de caracteres y bucles (el ejemplo que puse)

Código:
@for %%a in (programa1,programa2,programa3,programa4) do (start "" "%%a"&ping localhost -n 15 >nul 2>&1)

con esto haces ping 15 veces que duran casi 15 seg, pero no son exactos... unas veces son 13, 15, 14, 14,5...


Título: Re: Como prodria hacer esto en batch??
Publicado por: flony en 27 Marzo 2010, 21:42 pm
a ver en mi bat no hago extraccion de caracteres bucles menos...eso lo propuso saster...y el mio es muy linial y simple..a ver para tareas tontas bat tontos como el mio son mejor ahorran tiempo y recursos...el problemita del for es q puede entender que haga dos cosas o q si uno de los ejecutables no los puede localizar me pasa cuando tenes mas de una unidad y debes tener q poner cd D:\ para q no se pierda....el for se puede perder...no por poner todo en una linea es un buen bat...un bat es bueno cuando hace lo q queres...es mas podria haber puesto tambien if exict para ver si estan esos programas...pero se da por entendido que es su pc y sabe lo q tiene y donde...a no ser q me salgan con el clasico for de leo
Código:
@echo off
rem Leo Gutierrez R.
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
dir /b %%i:\ > nul 2>&1 && (
for /f "tokens=*" %%_ in ('dir /b /s %%i:archivoloco.txt') do (
[color=red]aca iria la accion[/color]"%%_"
)
)
)
exit /b 0
para buscarlo en toda la pc...o sea en definitiva
1) sabe q exicten los programasy localizacion
2) tienen un orden especifico de inicio
3) y queremos q funcione


Título: Re: Como prodria hacer esto en batch??
Publicado por: ---saster--- en 28 Marzo 2010, 12:35 pm
esta claro que no por poner un bat en una linea es mejor, pero si habiendo dos bat que hagan lo mismo cuanto mas compacto sea es mejor