Change output of pause command in batch script

后端 未结 9 469
孤独总比滥情好
孤独总比滥情好 2020-12-24 11:14

I\'m writing a Windows batch script. By default, the pause command will pause the script and display the text "Press any key to continue...".

相关标签:
9条回答
  • 2020-12-24 11:53

    Already many solutions. Another variation that makes some sense:

    echo Hit any key to continue...&pause>nul
    
    0 讨论(0)
  • 2020-12-24 11:55

    Here’s another trick

    Pause. >nul | echo.  Press something to continue
    
    0 讨论(0)
  • 2020-12-24 12:01

    You could do it like this!

    @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
    
    0 讨论(0)
  • 2020-12-24 12:02

    You could hide the text from the pause command by using this:

    pause >nul

    Then you could echo your own message to tell the user it has paused:

    echo The batch file has paused

    So the full script might look like this:

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

    Hope this helps :)

    0 讨论(0)
  • 2020-12-24 12:02

    Here's a one-liner

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

    It's slightly shorter (one less 'nul') than Aacini's solution:

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

    and, with the 'pause' first, I think that it's a little clearer what the intent is.

    With both

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

    Neither are as good, however, as the hypothetical

      pause/t any key to exit ...
    

    It's hard to believe that 'pause' has survived 35 years without this ability ;-)

    The solutions with 'echo' have the possibly undesirable trailing new-line,
    but do provide for multiple lines of text:

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

    bv

    0 讨论(0)
  • 2020-12-24 12:06

    "Not really what I was looking for, I was wondering whether there was a way of actually changing the output text of the Pause command, not just a workaround to it." – Hashim

    Yes, you can! But you must be aware that PAUSE is an internal command of CMD.EXE program, so, to modify the message that PAUSE show, you must modify CMD.EXE file. To do that, you must use an editor that may modify binary files. I used XVI32 program via these steps:

    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.
    

    You may now run CMD.EXE to get the modified PAUSE message. I made a test of this procedure:

    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 to everyone that read this answer:

    NOTE 1: Please, don't post that comment saying that modifying CMD.EXE file must NEVER be done! I think the same. I just posted this answer so the OP realized what he really asked for...

    NOTE 2: The reviewing of CMD.EXE file with a text editor, like Notepad, is very interesting. You may see all the internal commands, interesting details (like =ExitCode and =ExitCodeAscii variables), all the error messages, etc. For example, these are the internal commands:

    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                 & ( ) [ ] { } ^ = ; ! % ' + , ` ~               
    
    0 讨论(0)
提交回复
热议问题