¿Cómo puedo hacer que Rasdial se ejecute nuevamente si aún no hay una conexión disponible?

0

El siguiente comando (aplicable a la conexión PPPoE) está en un archivo .bat.

Rasdial "connection name" "user name" "password"

¿Cómo puedo hacer que se ejecute de nuevo automáticamente si falla (es decir, la conexión aún no está disponible)?

Matthew Wai
fuente
"Falla" de qué manera?
Ƭᴇcʜιᴇ007
La conexión aún no está disponible.
Matthew Wai
Parece que estás usando Windows. ¿Cual version?
boot13
Windows 7 Home Premium de 64 bits en chino tradicional.
Matthew Wai

Respuestas:

2

Cree un archivo por lotes (otro) (por ejemplo: BatchFile.bat) que contenga:

:Dial
Rasdial Connection_Name Username Password

if %errorlevel% GTR 0 goto Dial

Luego llame Start "" BatchFile.batdesde su archivo por lotes original.

Cuando RASDial sale normalmente, saldrá con errorlevel 0.

La instrucción If verifica si el nivel de error devuelto por el programa anterior (RASDial en este caso) es mayor que 0, y si lo es, supone que hay un error y salta hacia atrás para intentar nuevamente el marcado. De lo contrario, simplemente continúa.

Ƭᴇcʜιᴇ007
fuente
1
podría ser cualquiera %errorlevel% gtr 0o errorlevel 1. Esto también puede ser útil si OP quiere probar un código de error / salida específico: msdn.microsoft.com/en-us/library/windows/desktop/…
wmz
1
@ Ƭᴇcʜιᴇ007 y wmz, funciona. Pero, ¿cómo puedo hacer que la ventana se cierre automáticamente cuando esté completa?
Matthew Wai
@matthewwai me gustaría que sea candidato para una pregunta por separado. :)
Ƭᴇcʜιᴇ007
¿Cómo puedo hacer que se detenga automáticamente después de tres cambios de marcación?
Matthew Wai
Hola, @MatthewWai, sobre tu edición ("Comentario: GTRno funciona, pero gtrfunciona"), esos comandos de Windows no distinguen entre mayúsculas y minúsculas. Pruebe de nuevo porque el problema sería diferente a eso. Por ejemplo, usé dir *.axe & if %errorlevel% gtr 0 echo.1 & if %errorlevel% GTR 0 echo.1y dir *.* & if %errorlevel% gtr 0 echo.1 & if %errorlevel% GTR 0 echo.1con GTRy gtry funciona de la misma manera, pero ambos parecen mostrar cierto retraso al mostrar 1después de cambiar la línea de comando.
kokbira
0

Acabo de descubrir que mi archivo .bat original simplemente se puede eliminar, y puedo usar un solo archivo .bat que contiene los siguientes comandos para hacer todo el trabajo, incluido volver a marcar cuando falla.

: DIAL
Rasdial "nombre de conexión" "nombre de usuario" "contraseña"
Si el nivel de error 1 pasa a DIAL

Matthew Wai
fuente