Modifier la sortie de la commande pause dans le script batch
J'écris un script batch Windows. Par défaut, la commande pause
interrompt le script et affiche le texte " Appuyez sur n'importe quelle touche pour continuer...".
Comment puis-je modifier ce texte à afficher mon propre texte pour l'utilisateur?
Merci. :)
7 réponses
Vous pouvez masquer le texte de la commande pause
en utilisant ceci:
pause >nul
Ensuite, vous pouvez faire écho à votre propre message pour dire à l'utilisateur qu'il a fait une pause:
echo The batch file has paused
Donc le script complet pourrait ressembler à ceci:
@echo off
echo Hello World!
echo The batch file has paused
pause >nul
J'espère que cela aide :)
Voici un one-liner
pause>nul|set/p =any key to exit ...
Il est légèrement plus court (un 'nul'de moins) que la solution D'Aacini:
set/p<nul =any key to exit ...&pause>nul
Et, avec la "pause" d'abord, je pense que c'est un peu plus clair quelle est l'intention.
Avec les deux
cursor stays on the same line
ANY key works, not just 'enter'
Ne sont pas aussi bons, cependant, que l'hypothétique
pause/t any key to exit ...
Il est difficile de croire que 'pause' a survécu 35 ans, sans cette capacité ;-)
Les solutions avec 'echo' ont le potentiel indésirable
nouvelle ligne de fuite,
mais ne prévoir plusieurs lignes de texte:
Pause>nul|(echo All your bases &echo are belong to us &echo Press any key to die...)
Bv
" Pas vraiment ce que je cherchais, je me demandais s'il y avait un moyen de changer réellement le texte de sortie de la commande Pause, pas seulement une solution de contournement."- Hashim
Oui, vous pouvez! Mais vous devez être conscient que PAUSE est une commande interne de CMD.Programme EXE, donc, pour modifier le message qui PAUSE spectacle, vous devez modifier CMD.EXE. Pour ce faire, vous devez utiliser un éditeur qui peut modifier les fichiers binaires. J'ai utilisé XVI32 Programme via ces étapes:
1- Copy CMD.EXE file to a new folder created for this purpose: COPY %COMSPEC%
2- Edit the copy of CMD.EXE with XVI32.EXE program:
2.1- Locate the message you want. Messages are stored in 16-bits elements with the high byte equal zero. To locate a message:
2.1.1- In Search> Find> Text string> enter the message you want.
2.1.2- Convert Text -> Hex
2.1.3- Insert a zero after each letter-value
2.1.4- Press Ok
2.2- Modify the message for the new one. Modify existent letters only and keep zeros in place. Note that you can NOT extend any message.
2.3- End the edition and save the modified file.
Vous pouvez maintenant exécuter CMD.EXE pour obtenir le message de PAUSE modifié. J'ai fait un test de cette procédure:
C:\DOCUME~1\Antonio\MYDOCU~1\My Webs\XVI32 Hex File Editor
>pause
Press any key to continue . . .
C:\DOCUME~1\Antonio\MYDOCU~1\My Webs\XVI32 Hex File Editor
>cmd
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\DOCUME~1\Antonio\MYDOCU~1\My Webs\XVI32 Hex File Editor
>pause
Oprime una tecla para seguir. .
Notes à tous ceux qui lisent cette réponse:
NOTE 1 : veuillez ne pas poster ce commentaire disant que la modification de CMD.Fichier EXE ne doit jamais être fait! Je pense la même chose. Je viens de poster cette réponse pour que le PO réalise ce qu'il a vraiment demandé...
NOTE 2 : l'examen de CMD.Fichier EXE avec un éditeur de texte, comme le Bloc-Notes, est très Intéressant. Vous pouvez voir toutes les commandes internes, les détails intéressants (comme les variables =ExitCode et = ExitCodeAscii), tous les messages d'erreur, etc. Par exemple, ce sont les commandes internes:
C O L O R T I T L E C H D I R C L S C M D E X T V E R S I O N
D E F I N E D C O P Y P A T H P R O M P T P U S H D P O P D
A S S O C F T Y P E D A T E D E L D I R E C H O E N D L O C A L
E R A S E E R R O R L E V E L E X I T E X I S T B R E A K F O R
G O T O I F K E Y S M K D I R M D N O T P A U S E R D
R E M M O V E R E N A M E R E N R M D I R S E T S E T L O C A L
S H I F T S T A R T T I M E T Y P E V E R I F Y V E R V O L = , ; + / [ ] " : . \
P A T H E X T P A T H P R O M P T
F O R / ? I F / ? R E M / ?
% s % s
% s
/ A / P : E O F
f d p n x s a t z D O
/ L / D / F / R I N E L S E ( % s ) % s % s % s % s
% c % c % s % s & ( ) [ ] { } ^ = ; ! % ' + , ` ~
Il N'y a aucun moyen de changer le texte de la commande pause
. Cependant, vous pouvez regarder la commande choice
. Vous pouvez modifier le texte qu'il imprime. Le seul inconvénient est que vous devrez fournir une liste de caractères acceptables.
Autre sale solution serait quelque chose comme ceci,
SET /P =Press enter to return to the menu . . .
GOTO :menu
L'avantage de ceci est que le curseur reste sur la même ligne que le message, tout comme avec l' PAUSE
commande.
L'inconvénient est qu'il n'écoute que de la touche entrée.
Voici un autre truc
Pause. >nul | echo. Press something to continue
Vous pourriez le faire comme ça!
@echo off
echo Hello World!
echo:
echo Press 1 to continue
set /p letter=
if %letter% == 1 goto a ;or instead of goto you could write start and the file or website you want to start
pause >nul
:a
cls
echo BYE NOW!
pause >nul