web-dev-qa-db-ja.com

バッチファイル実行後にコンソールが自動的に閉じないようにする方法

ファイルの実行後にコンソールが自動的に閉じないようにするために、バッチファイルの最後にどんなコマンドを追加できますか?

449
joe

Windows/DOSバッチファイルの場合:

pause

これはNice "Press any key to continue . . . "メッセージを出力します

"Press any key to continue . . ."メッセージが欲しくないなら、代わりにこれをしてください:

pause >nul
578
Dave Bauman

正確な質問によります!

通常pause .bat ファイル内で仕事をします。

cmd.exe を閉じないようにして、入力を続けることができるようにするには、ファイルの末尾にcmd /kコマンドを使用します。

129

Cmd.exeを閉じずに入力を続けたい場合は、cmd /kを使用します。

/kが何をするのかを明確にする必要性を感じました(WindowsのWebサイトから):

/k:stringで指定されたコマンドを実行して続行します。

そのため、batファイルの最後にフォローアップコマンドを付けずにcmd /kを実行すると、cmd.exeウィンドウは開いたままになります。

一方、バッチファイルの最後にあるpauseは単にプロセスを一時停止し、最初のボタンを押すとcmd.exeを終了します。

57
Valentine Stone

以下の方法でバッチファイルにコマンドを入力すると、新しいコマンドプロンプトウィンドウが開き、新しいウィンドウは自動的には終了しません。

start "title" call abcd.exe param1 param2  
start "title" call xyz.exe param1 param2
21
user6928445

実行したいコードの下に新しい行としてcmd.exeを追加します。

c:\Python27\python D:\code\simple_http_server.py

cmd.exe
11
lyfing

私のやり方は、実際のバッチを書いて( "foo.bat"と言って)仕事を終わらせることです。それから、別の "start.bat"を作成してください。

@echo off
cmd /k foo.bat

私はこれが1回限りの環境変数を設定するとき非常に有用であると思います。

9
Erich Chen

バッチファイルの最後でcmdを呼び出します。

8
user4155296

pause以外に。

set /p=

使用することができます。ユーザーの入力を期待し、enterが押されるとフローを解放します。

または

runas /user:# "" >nul 2>&1

ユーザー入力からの何も表示されず、コマンド履歴にも残りません。

5
npocmaka

Maven を使用していて、入力をスキップして結果が表示されないようにコンソールを閉じたくない場合は、 'mvn clean install'だけでなく、スクリプトでCALLコマンドを使用する必要があります。

このようにコンソールを閉じます

ECHO This is the wrong exemple
mvn clean install
pause

このようにコンソール は開いたままになります

ECHO This is the right exemple
CALL mvn clean install
pause

CALLコマンドを使用しない場合は、どちらの例も機能しません。

5
Andrey Hartung

可能性1:2つの.batファイルを作成して最初のファイルに書き込むだけです。

start <filename> // name of 2nd batch file
exit

バッチファイル2は最後に閉じないファイルです。だから今あなたがバッチ番号1を開くと、それは2番目を開始し、それ自体を閉じるでしょう。 2回目が終わったとき、それは完全に閉じないでしょう(あなたが終わりに出口を置かない限り)

可能性2:バッチファイル1:

call <filename>
cls
echo End of file
pause
<any code you want>

2番目のファイルが終了すると、再びファイル1に進み、残りを出力します。それを使えば、エラーハンドラを作ることさえできます。 nr.1がクラッシュするとnr.2に入りそれを表示します

3
BlazeLP

この小さなハックはユーザにキーを入力してそれを変数%exitkey%に保存するように要求します(この変数はあなたが好きな名前で呼び出すことができます)。

set /p exitkey= "Press any key to continue..."

NB: '='の後のスペースは非常に重要です

2
pause

または

echo text to display
pause>nul
2
Zenedus

ユースケースに応じて2つの方法があります

1)実行結果を確認して後で閉じることができるように、Windows cmd Promptを開いたままにしておきたい場合。つかいます

pause

2)Windowsのcmdプロンプトを開いたままにしておき、その後コマンドを実行できるようにしたい場合。つかいます

cmd

enter image description here

1
Hitesh Sahu

ここで答えに問題があったので、私はこれを思いついた、それは私のために働く(TM):

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause
1
lama12345

私は遅れていることを知っていますが、私の望ましい方法は次のとおりです。

:programend
pause>nul
GOTO programend

このようにして、ユーザーはenterを使って終了することはできません。

1
decadenza

簡単ですが、最後の行にcmdを追加してください。システムパスをリセットまたはクリアする場合は、次のようにcmdをフルパスで起動する必要があります。

%windir%\system32\cmd.exe

たとえば、次のようにjdkを古いバージョンにリセットするためのbatファイルがあります。

PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\Apache-ant-1.7.1\bin
SET Java_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe

システムパスをリセットしたので、フルパスでcmdを実行する必要があります。そうしないと、cmd.exeが見つからないため、cmdを実行できず、ウィンドウを閉じるだけで、エラーメッセージは表示されません。 。

0
Wei Kleeff