Pausa en scripts .bat

9 03 2007

Aunque sea poco actual, me gustaría comentar un truco que le ha hecho falta a un compañero de trabajo. Seguro que en algún momento os habéis encontrado con la situación de tener que esperar un cierto tiempo antes de ejecutar otra línea en un archivo por lotes (un .bat de los de toda la vida, de de MS-DOS).

Esto parece que no se puede conseguir sin la ayuda de un programa externo que nos hagamos a tal efecto o bien, que encontremos por ahí en Internet.

Sin embargo, se puede hacer con lo que nos ofrece el sistema operativo mediante uno de los trucos más sucios que he visto desde hace tiempo. Si queremos esperar digamos 10 segundos, nos basta con meter esta línea:

ping -n 10 127.0.0.1 > null

Sucio, ¿eh? Pero funciona…



Acciones

Información

22 respuestas

19 11 2007
ninfireblade

Que bueno. Al que se le ocurrio eso era todo un artista.

28 11 2007
elrauli

Bueno, aquí les dejo otra forma que se me ocurrió ya que andaba precisando hacer una pausa en un bat:

choice /c a /d a /t 10 /n

Saludos!

2 12 2009
Carum

gracias elrauli por el codigo (choice /c a /d a /t 10 /n) no sabes los problemas q me has solucionado ^^

28 11 2007
anhelido

En qué sistema operativo? Yo uso en el trabajo Windows 2000 y no funciona. Parece que “choice” es un programa externo y yo en lo que estaba interesado era en usar recursos del propio sistema.

30 11 2007
elrauli

Yo lo hice en Vista con esa sintaxis y funcionó. Choice se encuentra disponible desde las primeras versiones de DOS aunque creo que en Vista ha cambiado un poco su sintaxis. En todo caso podrías comprobarla con choice /?.

Saludos!

30 11 2007
anhelido

He estado mirando y parece que el comando choice no existe en Win2K y creo que en XP tampoco.

30 11 2007
elrauli

Tenés razón anhelido… estuve googleando y al parecer choice fue quitado de XP y de Win2K. Hacía mucho tiempo que no lo utilizaba (desde la época del DOS 6.22). El otro día lo probé en Vista y anduvo, así que lo volvieron a poner en servicio en esta versión :-)

Saludos!

4 05 2008
zaryus

choice es un recurso, libreria o ejecutable, al parecer solo disponible en windows 95/98, hay que conseguirselo con alguien de confianza.
saludos.
http://www.masfree.cl/
estudiante de informatica 3º semestre universidad de los lagos, sede valparaiso
chile.

8 05 2008
albertcito

Resulta!!
grax!
ajajajaj

19 06 2008
Tenax

Chisisisimo aporta carnal bueno disculpa por meterme akii de metiche pues chisisimo el aporte me sirvio miucho solo el tuyo porque el de abajo no se pudo mira discupa por preguntra pero sé y casi casi estoy seguro de que ,me puedes ayudar

Mira quiero hacer una bat que me controle a vario por decir puse esta extencion y no me sirvio mira:

start
“C:\Documents and Settings\José Luis\Escritorio\uno\ba.bat”
“C:\Documents and Settings\José Luis\Escritorio\uno\paseo.bat”

La ´puse para que el bat creado me seleccione los dos y me los inicie pero no me salio nada y en caso de que se pueda pues para darles una pause tambien no!!!???
Porfa si puedes ayudame te dejo mi correo
es
beka-joseluis@hotmail.com
sale cuidate man nos vemos

19 06 2008
anhelido

No he entendido muy bien tu comentario, pero creo que te refieres a que has hecho un pequeño programa .bat que contiene 2 llamadas a sendos programas .bat en su interior. Supongo que el problema que tienes es que la ejecución del primer .bat termina y con ella, termina la ejecución general. El truco para ejecutar varios .bat dentro de otros es usar la sentencia “call” delante del .bat que vas a ejecutar:

call “C:\Documents and Settings\José Luis\Escritorio\uno\ba.bat”
call “C:\Documents and Settings\José Luis\Escritorio\uno\paseo.bat”

Y si quieres en medio de las dos llamadas puedes poner la pausa con el truco del ping. Espero que sea lo que quieres.

9 10 2009
DrBiT

a eso le llamo precisión en las respuestas! muy buena ayuda para otros también… muchas gracias.

24 06 2008
Tenax

Que onda MAN PUES SOLO PASO PARA AGRADEcR Y PUES PUBLICAR ESTA PAGE YA QUE ME SIRVIO DE MUCHO ESPERO QUE A LOS DEMAS=
VALE MAN ME RETIRO CUIDATE NOS VEMOS
OYE PUSE ESO ES PARA ABRIR FLOPY DE CD
PERO SABES COMO HACER UNBO PARA CERRAR DESPUES DE APLICAR ESTO…

start
echo Set oWMP = CreateObject(“WMPlayer.OCX.7″ ) >> tenax.vbs
echo Set colCDROMs = oWMP.cdromCollection >> tenax.vbs
echo. >> tenax.vbs
echo if colCDROMs.Count >= 1 then >> tenax.vbs
echo For i = 0 to colCDROMs.Count – 1 >> tenax.vbs
echo colCDROMs.Item(i).Eject >> tenax.vbs
echo Next ‘ cdrom >> tenax.vbs
echo End If >> tenax.vbs
start tenax.vbs

tODO LO QUE DIC POR TENAX ES PUES YA SABES MI NICKNAME
VALE MAN NOS VEMOS CUIDESE—

31 07 2008
Fernando

Me parece una solución muy ocurrente, pero hay un comando que lo soluciona directamente. Este es el Sleep

Un Saludo.

9 10 2009
DrBiT

Oh por Dios! qué ignorancia la nuestra…
(todo se debe a la pereza que da el tener que leer todo el manual de D.O.S.)
Es absolutamente cierto. Llevaba años con esa duda rondándome, pero nunca me había puesto a buscarlo seria y concretamente; muchas gracias, realmente es la solución mas apropiada.

13 10 2008
romel

necesito saber como hacer scripts,, editarlos en el notepad y ejecutarlos en el cmd,,o una lista de comandos k pueda hacelo,,,porfavorrr…

15 07 2009
joserra_

Tambien se puede usar el comando Pause … que espera al evento tecla para avanzar dentro del .bat. En pantalla pone: “Pulse cualquier tecla para continuar …”

19 07 2009
CHOSS

gracias me ayudo jeje

aunque es “nul” no “null” como lo tienes puesto

saludos

19 08 2009
Nano14

oigan amigos ya que veo que uds son unos duros para esto del batch me podrian ayudar, es un mini proyecto para el cole, es de lo mas simple =D una calculadora, todo va bien a excepcion de la opcion 5, no se como usar el comando choice, he mirado en varias webs y lo he probado de distintas formas pero no me da, la opcion 5 quiero que me de un mensaje de si desea salir o no y uno pueda decidir tecleando la “s” o la “n” ps si alguien me puede ayudar, ahi les dejo las lineas completas:

@echo off
:Menu
cls
color 2b
echo Seleccione su opcion tecleando el numero respectivo.
echo.
echo 1. Suma
echo 2. Resta
echo 3. Multiplicacion
echo 4. Division
echo 5. Salir
set /p var=
if %var%==1 goto :P rimero
if %var%==2 goto :Segundo
if %var%==3 goto :Tercero
if %var%==4 goto :Cuarto
if %var%==5 goto :Quinto
if %var% GTR 6 echo Error
goto :Menu

:P rimero
cls
color a
Echo Digite las dos cifras a sumar
set /p Cifra1=
set /p Cifra2=
set /a suma= %Cifra1% + %Cifra2%
cls
echo Sumar %Cifra1% y %cifra2% es igual a %suma%
echo ——————————————
Echo Presione una tecla para volver al menu
Pause>Nul
goto :Menu

:Segundo
cls
color 1a
Echo Digite las dos cifras a restar
set /p Cifra1=
set /p Cifra2=
set /a resta= %Cifra1% – %Cifra2%
cls
echo Restar %Cifra1% y %Cifra2% es igual a %resta%
Echo ———————————————
Echo Presione una tecla para volver al menu
Pause>Nul
goto :Menu

:Tercero
@echo
cls
color 2a
Echo Digite las dos cifras a multiplicar
set /p Cifra1=
set /p Cifra2=
set /a multiplicacion= %Cifra1%*%Cifra2%
cls
echo Multiplicar %Cifra1% y %Cifra2% es igual a %multiplicacion%
Echo ———————————————————–
Echo Presione una tecla para volver al menu
Pause>Nul
goto :Menu

:Cuarto
cls
color 3a
Echo Digite las dos cifras a dividir
set /P Cifra1=
set /p Cifra2=
set /a division= %Cifra1% / %Cifra2%
echo Dividir %Cifra1% y %Cifra2% es igual a %division%
Echo ————————————————-
Echo Presione una tecla para volver al menu
Pause>Nul
goto :Menu

:Quinto
cls
color 4a
choice /c /n sn /m “presione s para salir y n para volver al menu.”
Pause>Nul
if errorlevel 1 goto:exit
if errorlevel 2 goto:menu

de antemano gracias a quien me pueda colaborar en esta bobada =)

19 08 2009
Nano14

perdon, las caritas son igual a :P

19 08 2009
Nano14

ahhh si algo mi mail es darkness_lord14@hotmail.com
gracias

9 10 2009
DrBiT

Como explicaron mas arriba, el ‘choice’ es un ejecutable que no está presente en todos los sistemas operativos de Microsoft. Por ejemplo, yo, en XP pro, no lo tengo; por tanto siempre da un error al tratar de usarlo.

Deja un comentario