web-dev-qa-db-ja.com

バッチファイルコマンドPAUSEが機能しない

私はいくつかのことを支援するために簡単なバッチファイルを作成しています。また、出力する前にユーザーに確認してほしいという指示もあります。現在、ウィンドウは非常にすばやく閉じます。そこで、ファイルの最後にPAUSEを追加しましたが、動作しません。

SO)に関する他の質問を見て、行末がCRLFであり、ファイルの最後にCRLFがあることを確認しました。

助言がありますか?

49
Samaursa

最後のコマンドが失敗した場合、一時停止は機能しません。

実行中のコマンドの後ろに「呼び出し」を置くことで(一時停止前のコマンドが何であれ)、一時停止が機能するように修正できます。

たとえば、次のようなphpunitバッチファイルがありました。

phpunit tests/sometests.php
pause

Phpunitが失敗すると、一時停止せずに終了しました。これに変更すると、正しく一時停止しました。

call phpunit tests/sometests.php
pause
121
Tim

一時停止前の最後のコマンドは正常に実行されますか?スクリプトを共有することに注意してください-少なくとも最後のいくつかのコマンド?

または、Windows7を使用しているように見えるため、タイムアウトコマンドを試して、それが機能しているかどうかを確認します。

3
Vivek Madani

エコーでも問題が発生していました...長いバッチファイルが原因であると仮定して...一時停止は実行されていましたが、一時停止ではなく、一時停止が実行された後にキーを押すようなものでした。

上記の推奨ソリューションを試しました。どれも機能しませんでした。

将来の参考のために、私がやったことは次のとおりです。

基本的に「pause> nul && pause> nul」;毎回動作します。

@echo off

CALL :ForcePause "Press any key to resume."
ECHO.
ECHO Hello World!
ECHO.
CALL :ForcePause "Press any key to exit."

EXIT

REM You can remove echo if you don't want to pass custom string for pause
:ForcePause
echo %~1
pause > nul && pause > nul
GOTO :EOF
2
Zunair

私は問題がどこにあるかを知っていると思う、私は同じ問題を抱えていた。したがって、このように作成している場合は、新しいファイルを作成し、その中にすべてのバッチ情報を入れて通常のテキストのように保存します。テキストエディタで保存する必要があり、そこから「バッチファイル(。bat;。cmd; *。nt)」(Notepad ++など)を選択する必要があります。こんな感じで大丈夫だと思う。 GL!:)

1
Atanas Kovachev

ティムの答えに加えて、ウィンドウを常に表示する場合は、次のように.batファイルを作成できます。

call phpunit tests/sometests.php
cmd /k
0
Justin

私は同じ問題を抱えています。これは、次の2つの理由により発生します。
最初のものは 管理者としてバッチファイルを実行する

バッチファイルをデスクトップに移動し、管理者として試してみましたが、正常に動作します。
任意のディスクルート(C:\ D:\など)にバッチファイルを移動しようとしましたが、正常に動作します。
バッチファイルをスペースのあるディレクトリに移動しようとしましたが、正常に動作します。

2番目の主な理由は次のとおりです。 バッチファイルのディレクトリにいくつかの特殊文字(@や&など)がありました

この特殊文字を見つけて、フォルダー名から削除するだけです。そして、それは正しく動作します。