[BATCH] - Ejecución de varias aplicaciones a la vez

Iniciado por melk, 18 Abril 2014, 14:14 PM

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

melk

Buenas a todos,

Definitivamente, no sé que estoy haciendo mal, llevo unos días detrás del script (aunque tampoco es que haya tenido mucho tiempo).

Lo que quiero es tener un script básico en bat que me permita ejecutar un conjunto de aplicaciones.

Lo he intentado llamando las aplicaciones unas tras otras, pero el script espera a que una aplicación termine para llamar a la siguiente.

Usando start /b lo ejecuta en la misma ventana pero me escribe por cada aplicación ejecutada el mensaje de bienvenida del cmd. Aparte de que algo debo estar haciendo mal con la gestión de los gotos

La verdad que me lía bastante el uso de gotos pq nunca los he utilizado en programación web.

Bueno, os dejo el script que por ahora he intentado hacer por si algún alma caritativa puede ayudame.


@echo off
echo "Ejecutando Xampp, Sublime Text 2 y Koala"
start /b "C:\Program Files (x86)\Koala\koala.exe"
start /b C:\xampp\xampp-control.exe
start /b "C:\Program Files\Sublime Text 2\sublime_text.exe"
set /p respuesta = Abrir Thunderbird? (s/n)

if [%respuesta%]==s goto Thunderbird
if [%respuesta%]==n goto Siguiente


:Thunderbird
echo "Abriendo Thunderbird..."
start /b "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"

:Siguiente
set /p respuesta = Spotify, Radiosure o ninguno? (s/r/n)

if [%respuesta%]==s goto Spotify
if [%respuesta%]==r goto Radiosure
if [%respuesta%]==n goto Ninguno

:Spotify
start /b C:\Users\David\AppData\Roaming\Spotify\spotify.exe
exit

:Radiosure
start /b C:\Users\David\AppData\Local\RadioSure\RadioSure.exe
exit

:Ninguno
exit


Un saludo,  :silbar:

Eleкtro

#1
Corre cada comando en una nueva instancia de la CMD.

CMD /[K|C] "Argumentos"

Ej:
Código (dos) [Seleccionar]
Start /B "CMD" "%ComSpec%" /K " Start "APP" "Notepad.exe" "

EDITO: Addemás...
Citarset /p respuesta = Abrir Thunderbird? (s/n)

if [%respuesta%]==s

Algo falla ahí.

1. Encerrar variables con comillas dobles.
2. No dejar espacios vacios en el nombre de la variable.
3. No añadir caracteres especiales a la expresión del IF, y encerrarla también con comillas dobles.

Ej:
Set /P "Respuesta=Pregunta"
If /i "%respuesta%"=="s" (Goto :...)


Nota: Usa el comando Choice para preguntas Booleanas.








NikNitro!

Creo recordar que poniendo un $ al final de la sentencia se ejecutaba en segundo plano y te permitia seguir llamando aplicaciones. Luego para traerlas al hilo principal se usaban bg y fg (background y foreground). Al menos en Bash. No se si habrá mucha diferencia.

Saludos ;)

daryo

Cita de: NikNitro! en 18 Abril 2014, 15:58 PM
Creo recordar que poniendo un $ al final de la sentencia se ejecutaba en segundo plano y te permitia seguir llamando aplicaciones. Luego para traerlas al hilo principal se usaban bg y fg (background y foreground). Al menos en Bash. No se si habrá mucha diferencia.

Saludos ;)

ojala batch fuera la mitad de potente que bash
buenas


melk

Buenas,

Gracias por la ayuda.

He cambiado todo el archivo según vuestras instrucciones.

El codigo queda ahora:


@echo off

echo "Ejecutando Xampp, Sublime Text 2 y Koala"
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Program Files (x86)\Koala\koala.exe" "
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\xampp\xampp-control.exe" "
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Program Files\Sublime Text 2\sublime_text.exe" "

set /P "respuesta=Abrir Thunderbird? (s/n)"

If /i "%respuesta%"=="s" (Goto :Thunderbird)
If /i "%respuesta%"=="n" (Goto :Siguiente)

:Thunderbird
echo "Abriendo Thunderbird..."
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" "

:Siguiente
set /P "respuesta=Spotify, Radiosure o ninguno? (s/r/n)"

If /i "%respuesta%"=="s" (Goto :Spotify)
If /i "%respuesta%"=="r" (Goto :Radiosure)
If /i "%respuesta%"=="n" (Goto :Ninguno)

:Spotify
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Users\David\AppData\Roaming\Spotify\spotify.exe" "
exit

:Radiosure
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Users\David\AppData\Local\RadioSure\RadioSure.exe" "
exit

:Ninguno
exit


Y se me ejecutan las 3 primeras aplicaciones, incluyendo thunderbird si le digo que si (aunque me aparece ese molesto prompt)

Luego para la siguiente pregunta ya pasa de mi. Os dejo la salida.

Citar"Ejecutando Xampp, Sublime Text 2 y Koala"
Abrir Thunderbird? (s/n)
C:\Users\David\Desktop>
C:\Users\David\Desktop>
C:\Users\David\Desktop>s
"Abriendo Thunderbird..."
Spotify, Radiosure o ninguno? (s/r/n)
C:\Users\David\Desktop>r
"r" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

C:\Users\David\Desktop>

Creo que me estoy perdiendo un poco...

Eleкtro

Código (dos) [Seleccionar]
Choice /C "SRN" /M "Spotify, Radiosure o ninguno?"

Saludos








melk

Y pregunta de noob, ¿donde se almacena la respuesta del Choice?

Me está tirando diciendo que R o S o N no es un comando válido

Perdon por mi ignorancia  :(

Eleкtro

#8
1. No uses el mismo nombre de variable para más de una variable o pueden entrar en conflicto sus valores...

Set /P "Respuesta1=..."
Set /P "Respuesta2=..."


2. El resultado del comando Choice se almacena en el código de salida, es decir, puedes acceder a él en la variable dinámica ERRORLEVEL.

Código (dos) [Seleccionar]
@Echo OFF

Choice /C "SRN" /M "Spotify, Radiosure, o ninguno?"
Call :Choice%ErrorLevel%
Pause&Exit

:Choice1::S
("%AppData%\Spotify\spotify.exe")2>NUL & Goto :EOF

:Choice2::R
("%LocalAppData%\RadioSure\RadioSure.exe")2>NUL & Goto :EOF

:Choice3::N
Goto :EOF


Saludos








melk

La verdad que vaya cosas más raras se ven en batch xD

Creo que terminaba antes haciéndome un script en PHP y ejecutándolo en consola xD

Bueno, a lo que voy:


@echo off

echo "Ejecutando Xampp, Sublime Text 2 y Koala"
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Program Files (x86)\Koala\koala.exe" "
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\xampp\xampp-control.exe" "
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Program Files\Sublime Text 2\sublime_text.exe" "

set /P "respuesta=Abrir Thunderbird? (s/n)"

If /i "%respuesta%"=="s" (Goto :Thunderbird)
If /i "%respuesta%"=="n" (Goto :Siguiente)

:Thunderbird
echo "Abriendo Thunderbird..."
Start /B "CMD" "%ComSpec%" /K " Start "APP" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" "

:Siguiente
Choice /C "SRN" /M "Spotify, Radiosure, o ninguno?"
Call :Choice%ErrorLevel%
Pause&Exit

:Choice1::S
("%AppData%\Spotify\spotify.exe")2>NUL & Goto :EOF

:Choice2::R
("%LocalAppData%\RadioSure\RadioSure.exe")2>NUL & Goto :EOF

:Choice3::N
Goto :EOF


Tengo colocado eso, la parte que me dices que no use respuesta en más de una ocasión no la entiendo muy bien ya que solo la utilizo en dos ocasiones, lectura y escritura.

Sobre el tema del Choice se sigue emperrando el sistema en que no existe R o N o S como comando y blablabla.

Estoy por programarme algo en otro lenguaje pero sólo por no darte la paliza xDD