windows - Skift output af pause kommandoen i batch script

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver en Windows-batch script. Som standard vil kommandoen pause pausere scriptet og vise teksten 'Tryk på en vilkårlig tast for at fortsætte ...' .


Hvordan ændrer jeg denne tekst for at vise min egen tekst til brugeren?


Tak. :)

Bedste reference


Du kan skjule teksten fra kommandoen pause ved at bruge denne:


pause >nul


Så kan du ekko din egen besked for at fortælle brugeren, at den har stoppet:


echo The batch file has paused


Så det fulde script kan se sådan ud:


@echo off
echo Hello World!
echo The batch file has paused
pause >nul


Håber dette hjælper :)

Andre referencer 1


Her er en en-liner


  pause>nul|set/p =any key to exit ...


Det er lidt kortere (en mindre 'null')
end Aacini 's løsning:


  set/p<nul =any key to exit ...&pause>nul


og med 'pause' først tror jeg det
det er lidt klarere hvad hensigten er.


Med begge


  cursor stays on the same line  
  ANY key works, not just 'enter'  


Det er heller ikke så godt som det hypotetiske


  pause/t any key to exit ...


Det er svært at tro, at 'pause' har overlevet
35 år uden denne evne ;-)


Løsningerne med 'ekko' har muligvis uønsket
efterfølgende ny linje,

men sørg for flere linjer med tekst:


  Pause>nul|(echo  All your bases &echo  are belong to us &echo Press any key to die...)


bv

Andre referencer 2



  'Ikke rigtig, hvad jeg ledte efter, jeg spekulerede på, om der var en måde at rent faktisk ændre udskriftsteksten i Pause-kommandoen, ikke bare en løsning på det.' - Hashim



Ja du kan! Men du skal være opmærksom på, at PAUSE er en intern kommando af CMD.EXE-programmet. For at ændre meddelelsen, som PAUSE viser, skal du ændre CMD.EXE-filen. For at gøre det skal du bruge en editor, der kan ændre binære filer. Jeg brugte XVI32-programmet via disse trin: [20]


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.


Du kan nu køre CMD.EXE for at få den ændrede PAUSE-besked. Jeg har testet denne procedure:


C:DOCUME~1AntonioMYDOCU~1My WebsXVI32 Hex File Editor
>pause
Press any key to continue . . .

C:DOCUME~1AntonioMYDOCU~1My WebsXVI32 Hex File Editor
>cmd
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:DOCUME~1AntonioMYDOCU~1My WebsXVI32 Hex File Editor
>pause
Oprime una tecla para seguir. .


Noter til alle, der læser dette svar:


NOTE 1 : Vær venlig at skrive ikke den kommentar, der siger, at ændringen af ​​CMD.EXE-filen aldrig skal gøres! Jeg synes det samme. Jeg har lige skrevet dette svar, så OP realiserede, hvad han virkelig bad om. ..


NOTE 2 : Gennemgangen af ​​CMD.EXE-filen med en teksteditor, som Notesblok, er meget interessant. Du kan se alle de interne kommandoer, interessante detaljer (som=ExitCode og=ExitCodeAscii variabler), alle fejlmeddelelser mv. Disse er f.eks. De interne kommandoer:


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                 & ( ) [ ] { } ^ = ; ! \% ' + , ` ~               

Andre referencer 3


Der er ingen måde at ændre teksten til kommandoen pause. Men du vil måske se kommandoen choice. Du kan ændre den tekst, den udskriver. Den eneste ulempe er, at du skal give en liste over acceptable tegn.

Andre referencer 4


En anden beskidte løsning ville være noget som dette,


SET /P =Press enter to return to the menu . . . 
GOTO :menu


Fordelen ved dette er, at markøren forbliver på samme linje som meddelelsen, ligesom med kommandoen PAUSE.


Ulempen er, at den kun lytter til indtastningsnøglen.

Andre referencer 5


Her er et andet trick


Pause. >nul | echo.  Press something to continue

Andre referencer 6


Du kan gøre det som dette!


@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