2012-02-13 17 views
22

私はWindowsのバッチスクリプトを書いています。既定では、pauseコマンドはスクリプトを一時停止し、「続行するには、いずれかのキーを押してください」というメッセージを表示します。バッチスクリプトの一時停止コマンドの出力を変更します

ユーザーに自分のテキストを表示するには、このテキストを変更するにはどうすればよいですか?

ありがとうございました。 :)あなたがこれを使用することによりpauseコマンドからテキストを隠すことができ

答えて

76

echo The batch file has paused

pause >nul

を次に、あなたはそれが一時停止したことをユーザーに伝えるために、独自のメッセージをエコー可能性

完全なスクリプトは次のようになります。

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

希望します。

+0

は本当に私が探していたものを、私は実際に一時停止コマンドの出力テキストではなく、それにだけ回避方法を変更する方法があったかどうかを疑問に思ったわけではありません。 – Hashim

+1

いいえ、AFAIKはそのテキストを変更する方法がありません。 –

+0

KK、私が聞くと思いますまさに私が恐れて。とにかく助けてくれてありがとう、仲間。 :) – Hashim

5

pauseコマンドのテキストを変更する方法はありません。しかし、choiceコマンドを見たいかもしれません。印刷するテキストを変更することができます。唯一の欠点は、受け入れ可能な文字のリストを提供する必要があることです。

+0

'choice'コマンドをチェックアウトしました。 A)私は本当にあなたが、私が代わりに '' pause'コマンドのchoice'を使用して示唆している場合を除き、それは、私はこのケースでに何をしたい達成を支援する方法を理解していませんよ? B)私はWindows XPを実行しているので、とにかく問題はありません。また、余分なリソースキットをダウンロードしない限り、choiceコマンドはサポートされていません。ここをクリックしてください:http://www.robvanderwoude.com/choice.phpそれを使用するために余分なリソースキットをダウンロードした場合、スクリプトを使用する予定のすべてのコンピュータで同じことをしなければならないでしょうか? – Hashim

7

"実際に私が探していたものではありませんでしたが、回避策ではなく、一時停止コマンドの出力テキストを実際に変更する方法があるかどうかは疑問でした。 - ハシム

はい、できます!しかし、PAUSEはCMD.EXEプログラムの内部コマンドなので、PAUSEが表示するメッセージを変更するには、CMD.EXEファイルを変更する必要があります。これを行うには、バイナリファイルを変更する可能性のあるエディタを使用する必要があります。私は、これらの工程を経てXVI32プログラムを使用:

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. 

あなたが今修正PAUSEメッセージを取得するためにCMD.EXEを実行することができます。

注1:この回答を読んでみんなに

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

注:私は、この手順のテストを行った、CMD.EXEファイルを変更することにすることはできませんと言っているコメントを投稿しないでください完了!私もそう思う。私はちょうど彼が実際に尋ねたことを実現したので、この回答を投稿しました。

メモ2:メモ帳のようなテキストエディタでCMD.EXEファイルを確認することは非常に面白いです。興味深い詳細(= ExitCodeやExitCodeAscii変数など)、すべてのエラーメッセージなどが表示される場合があります。例えば、これらは、内部コマンドです:別の汚いソリューションは、このようなものになるだろう

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

ええ、私はCMD.exeの編集を危険にさらすつもりはありません。私はちょうどそれがそうすることを可能にしたパラメータまたはPAUSEの何かになることを望んでいました。また、CMD.exeを正常に変更できたとしても、スクリプトを使用するすべてのマシンで同じ修正を適用する必要がありますか?それは不可能で、完全に非実用的です。とにかくAaciniありがとう。 – Hashim

+4

これと同じような解決策を望んでいない理由は分かっていません。 'SET/P =あなたが望むどんなテキストでも NUL'です。 – Aacini

1

、本の

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

利点は、カーソルがメッセージとして同じ行にとどまるということですこれは、PAUSEコマンドと同様です。

欠点は、それが唯一の入力キーに耳を傾けていることです。

+1

しかし、あなたは 'enter'キーに限られていますが、' pause'は全てのキーを(ほとんど)必要とします。 – Stephan

1

はここでここで別のトリック

Pause. >nul | echo. Press something to continue 
10

だAaciniのソリューションよりもそれは少し短い(1少ない 'NUL') だワンライナー

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

です:

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

と、最初の「一時停止」で、私はそれがだと思う 意図が何であるかが少しはっきりしています。

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

どちらとして優れているの両方で

は、しかし、仮定の

pause/t any key to exit ... 

ように、それは '一時停止' は;-)この能力なし 35年間生き延びたことを信じるのは難しい

「エコー」と

ソリューションは、おそらく望ましくない 末尾の新しいラインを持っている
が、複数行のテキストを提供します:

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

BV

+1

実際には、私はあなたが複数のことを行うことができ、後続の改行がないことを認識しました。Pause> nul | (あなたのすべての基地とエコーは私たちに属しており、/ p =死ぬ鍵を押す...) –

0

あなたはこのようにそれを行うことができます!

@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 
関連する問題