web-dev-qa-db-fra.com

La commande de fichier batch PAUSE ne fonctionne pas

Je crée un fichier de commandes simple pour aider dans certaines choses, et j'ai quelques instructions qu'il imprime également que je veux que l'utilisateur voit avant de quitter. Actuellement, la fenêtre se ferme très rapidement. J'ai donc ajouté PAUSE à la fin du fichier, mais il ne veut pas fonctionner.

J'ai regardé d'autres questions sur SO et j'ai vérifié que les fins de ligne sont CRLF et que j'ai CRLF à la fin du fichier.

Aucune suggestion?

49
Samaursa

Si la dernière commande échoue, la pause ne fonctionnera pas.

Vous pouvez le corriger en mettant "call" derrière la commande que vous exécutez (quelle que soit la commande avant la pause), la pause fonctionnera.

Ainsi, par exemple, j'avais un fichier batch phpunit qui ressemblait à ceci:

phpunit tests/sometests.php
pause

Lorsque phpunit a échoué, il s'est simplement arrêté sans s'arrêter. Le changer en ceci l'a fait s'arrêter correctement:

call phpunit tests/sometests.php
pause
121
Tim

La dernière commande avant pause s'exécute-t-elle correctement? Vous voulez partager votre script - au moins quelques dernières commandes?

Alternativement, puisque vous semblez utiliser Windows7, essayez la commande Timeout et voyez si cela fonctionne.

3
Vivek Madani

J'avais des problèmes même sur l'écho ... en supposant que cela était causé par un long fichier de commandes ... Pause était en cours d'exécution mais il ne faisait pas de pause, c'était presque comme s'il appuyait sur une touche après l'exécution de Pause.

Solutions suggérées ci-dessus; aucun n'a fonctionné.

Donc, juste pour référence future, voici ce que j'ai fait:

Fondamentalement, "pause> nul && pause> nul"; fonctionne à chaque fois.

@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
2
Zunair

Je pense que je sais où est le problème, j'ai eu le même problème. Donc, si vous le faites comme ça, vous créez un nouveau fichier et y mettez toutes les informations de lot et l'enregistrez comme du texte normal et après cela renommez simplement l'extension, cela ne fonctionnera pas :). Vous devez l'enregistrer via l'éditeur de texte et à partir de là, vous devez choisir "Fichier batch (. Bat;. Cmd; *. Nt)" par exemple Notepad ++, probablement à cause de l'encodage alors faites-le il comme ça et je pense que ce sera ok. GL! :)

1
Atanas Kovachev

Juste en plus de la réponse de Tim, si vous voulez que la fenêtre s'affiche toujours, vous pouvez écrire le fichier .bat comme:

call phpunit tests/sometests.php
cmd /k
0
Justin

J'ai le même problème. Cela se produit pour deux raisons:
La première est quand exécution du fichier de commandes en tant qu'administrateur.

J'ai déplacé mon fichier de commandes sur le bureau et je l'ai essayé en tant qu'administrateur et cela fonctionne très bien.
J'ai essayé de déplacer le fichier de commandes vers n'importe quelle racine de disque (comme C:\D:\etc.) et cela fonctionne correctement.
J'ai essayé de déplacer le fichier batch vers n'importe quel répertoire avec des espaces et cela fonctionne correctement.

La deuxième et principale raison est: Il y avait des caractères spéciaux (comme @ ou & ou quelque chose comme ça) dans le répertoire du fichier batch.

Trouvez simplement ce caractère spécial et supprimez-le du nom du dossier. Et cela fonctionnera correctement.

0