windows 7 - pausa - El comando de archivo por lotes PAUSE no funciona
comandos script windows (6)
¿El último comando antes de la pausa se ejecuta con éxito? ¿Te importa compartir tu guión, al menos los últimos comandos?
Alternativamente, dado que parece estar usando Windows7, pruebe el comando Timeout y vea si está funcionando.
Estoy creando un archivo por lotes simple para ayudar en algunas cosas, y tengo algunas instrucciones que se imprimen también que quiero que el usuario vea antes de salir. Actualmente, la ventana se cierra muy rápido. Así que agregué PAUSE
al final del archivo, pero no quiere funcionar.
Miré otras preguntas en SO y revisé para asegurarme de que las terminaciones de línea son CRLF
y que tengo CRLF
al final del archivo.
¿Alguna sugerencia?
Además de la respuesta de Tim, si desea que la ventana siempre se muestre, puede escribir el archivo .bat como:
call phpunit tests/sometests.php
cmd /k
Creo que sé dónde está el problema, tuve el mismo problema. Entonces, si lo haces así, estás creando un archivo nuevo y poniendo toda la información del lote dentro de él y guardándolo como el texto normal, y después de esto simplemente renombra la extensión, no funcionará :). Tienes que guardarlo a través del editor de texto y desde allí tienes que elegir "Archivo por lotes ( .bat; .cmd; *. Nt)", por ejemplo, Notepad ++, es probablemente debido a la codificación, hazlo así y lo creo estará bien. GL! :)
Estaba teniendo problemas incluso en el eco ... suponiendo que fue causado por un archivo por lotes largo ... Pausa se estaba ejecutando pero no estaba en pausa, era casi como si estuviera presionando una tecla después de que se ejecutó Pausa.
Intenté las soluciones sugeridas arriba; ninguno funcionó.
Entonces, solo para referencia futura, esto es lo que hice:
Básicamente solo "pause> nul && pause> nul"; funciona todo el tiempo
@echo off
CALL :ForcePause "Press any key to resume."
ECHO.
ECHO Hello World!
ECHO.
CALL :ForcePause "Press any key to exit."
EXIT
REM You can remove echo if you don''t want to pass custom string for pause
:ForcePause
echo %~1
pause > nul && pause > nul
GOTO :EOF
Si el último comando falla, la pausa no funcionará.
Puedes arreglarlo poniendo "call" detrás del comando que estás ejecutando (cualquier comando que esté antes de la pausa), entonces la pausa funcionará.
Entonces, por ejemplo, tenía un archivo por lotes phpunit que se veía así:
phpunit tests/sometests.php
pause
Cuando phpunit falló, simplemente salió sin detenerse. Al cambiarlo a esto, se pausó correctamente:
call phpunit tests/sometests.php
pause
Tengo el mismo problema. Esto ocurre por dos razones:
El primero es cuando se ejecuta el archivo por lotes como administrador .
He movido mi archivo por lotes al escritorio y lo intento como administrador y funciona bien.
He intentado mover el archivo por lotes a cualquier raíz del disco (como C: / D: / etc.) y funciona correctamente.
He intentado mover el archivo por lotes a cualquier directorio con espacios y funciona correctamente.
La segunda y principal razón es: Hubo algunos caracteres especiales (como @ o & o algo así) en el directorio del archivo por lotes .
Solo encuentra este personaje especial y quítalo del nombre de la carpeta. Y funcionará correctamente.