webentwicklung-frage-antwort-db.com.de

Ausgabe des Pausenbefehls im Batch-Skript ändern

Ich schreibe ein Windows-Batch-Skript. Standardmäßig hält der Befehl pause das Skript an und zeigt den Text an. "Drücken Sie eine beliebige Taste, um fortzufahren ...".

Wie ändere ich diesen Text, um dem Benutzer meinen eigenen Text anzuzeigen?  

Vielen Dank. :) 

24
Hashim

Sie können den Text vor dem Befehl pause ausblenden, indem Sie Folgendes verwenden:

pause >nul

Dann können Sie eine E-Mail mit Ihrer eigenen Nachricht senden, um dem Benutzer mitzuteilen, dass er angehalten hat:

echo The batch file has paused

Das vollständige Skript könnte also so aussehen:

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

Hoffe das hilft :)

82
Bali C

Hier ist ein Einzeiler

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

Es ist etwas kürzer (eine weniger als 'nul') Als Aacinis Lösung:

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

und mit der "Pause" zuerst denke ich, dass es etwas klarer ist, was die Absicht ist.

Mit beiden

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

Keines ist jedoch so gut wie das Hypothetische

  pause/t any key to exit ...

Es ist kaum zu glauben, dass 'Pause' 35 Jahre ohne diese Fähigkeit überlebt hat ;-)

Die Lösungen mit "Echo" haben die möglicherweise unerwünschte Nachfolgende New-Line,
Stellen Sie jedoch mehrere Textzeilen bereit:

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

bv

11
bob vance

"Nicht wirklich, wonach ich gesucht habe. Ich habe mich gefragt, ob es eine Möglichkeit gibt, den Ausgabetext des Pausenbefehls tatsächlich zu ändern, nicht nur eine Problemumgehung." - Hashim 

Ja, du kannst! Sie müssen sich jedoch bewusst sein, dass PAUSE ein interner Befehl des CMD.EXE-Programms ist. Um die Meldung zu ändern, die PAUSE anzeigt, müssen Sie die CMD.EXE-Datei ändern. Dazu müssen Sie einen Editor verwenden, der binäre Dateien ändern kann. Ich habe XVI32 über folgende Schritte benutzt:

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.

Sie können jetzt CMD.EXE ausführen, um die geänderte PAUSE-Nachricht abzurufen. Ich habe dieses Verfahren getestet:

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. .

Notizen an alle, die diese Antwort lesen:

NOTE 1: Bitte posten Sie nicht diesen Kommentar, der besagt, dass das Ändern der CMD.EXE-Datei NIEMALS durchgeführt werden muss! Ich denke, das gleiche. Ich habe gerade diese Antwort gepostet, damit das OP erkannte, wonach er wirklich gefragt hatte ...

NOTE 2: Die Überprüfung der CMD.EXE-Datei mit einem Texteditor wie Notepad ist sehr interessant. Sie können alle internen Befehle, interessante Details (wie die Variablen = ExitCode und = ExitCodeAscii), alle Fehlernachrichten usw. sehen. Dies sind beispielsweise die internen Befehle:

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

Es ist nicht möglich, den Text des pause-Befehls zu ändern. Möglicherweise möchten Sie jedoch den Befehl choice betrachten. Sie können den gedruckten Text ändern. Der einzige Nachteil ist, dass Sie eine Liste der zulässigen Zeichen angeben müssen.

5
Michael

Eine andere dirty - Lösung wäre etwa so,

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

Dies hat den Vorteil, dass der Cursor in der gleichen Zeile wie die Nachricht bleibt, genau wie beim Befehl PAUSE.

Der Nachteil ist, dass nur die Eingabetaste abgehört wird.  

1
Trevi Awater

Hier ist ein weiterer Trick 

Pause. >nul | echo.  Press something to continue
1
Panikosagros

Du könntest es so machen!

@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
Super461