• ベストアンサー

2つ目の「pause」は無効?

DOSコマンドの「pause」について質問です。 -- test1.bat pause echo ああああ pause -- このようなバッチファイルを実行したときに 2つ目のpauseでは処理ストップしないようです。 # 3つ目を追加すると同様の動作をするようです。 # -- test2.bat # pause # echo ああああ # pause > NUL # pause # -- これってpauseコマンドのバグでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.4

おそらく、空白やEnterや英字でなく、カーソルキーとかファンクションキーなどを押したのでしょう。それらのキーではキーコードが2バイトなのでPAUSEコマンドを2つ分前に進めてしまいます。 バグかと言うと難しいですが、「限りなくバグに近い仕様」という所でしょうか。

soaikats
質問者

お礼

notnotさん、ありがとうございます。 ビンゴでした。バッチ実行後、 「続行するには何かキーを押してください...」と 押されたとき、十字キーの下を押していました。 回答いただいた他の皆さんも含め、 大変お世話になりました。

その他の回答 (3)

  • saru_1234
  • ベストアンサー率33% (452/1341)
回答No.3

ANo.1 です。 Windows XP Home SP2 もいじれたので試してみましたが、 まったく同様に 2番目 Pause も効きました。 BATchファイル中に変な文字とか入ってませんかね... もしくは command.exe (か cmd.exe ? )が壊れてるかも?

soaikats
質問者

お礼

saru_1234さん、ありがとうございます。 バッチ内に変な文字は入っていませんでした。 フリーのテキストエディタで作成していたので 一応、バイナリエディタも見てみましたが 改行(0D0A)が入っていました。

  • koko_u
  • ベストアンサー率12% (14/116)
回答No.2

ウチでも正常に動いたね。 WindowsXP Professional SP2

soaikats
質問者

お礼

koko_uさん、ありがとうございます。 環境により正常動作するんですね。

  • saru_1234
  • ベストアンサー率33% (452/1341)
回答No.1

変ですね。Windows2000 Pro SP4 では cmd と command の両方とも、 2番目、3番目でも pause の箇所でポーズしましたけど... お使いのOSは何でしょうか?

soaikats
質問者

お礼

saru_1234さん、回答ありがとうございます。 OSはWindowsXP Home SP2です。

関連するQ&A

  • コマンドプロンプトからのcmd実行について

    現在VBSでオブジェクトを定義しrunを使いcmd経由で他のバッチ・VBS・ソフトの起動をやっています。 ふととあるパスが実行できませんでした。 そこで別途個別にコマンドプロンプトだけで実行してみましたがやはりうまく処理できません。 [echo.bat] echo test pause [コマンドプロンプト] rem その1 cmd /K c:\temp\a\echo.bat rem その2 cmd /K C:\Temp\(a\echo.bat その1の結果 C:>cmd /K C:\Temp\a\echo.bat C:>echo test test C:>pause 続行するには何かキーを押してください . . . その2の結果 C:>cmd /K C:\Temp\(a\echo.bat 'C:\Temp\' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:> 上記のように1は正常に処理され2はうまく処理されません。 解決策をひたすら検索したのですが見つからず なんとなくだいたい分かったのが一部『(』や『)』や『&』や『@』や『^』などの記号が混じるとどうやらうまく処理できないようです。 なぜ処理できないのか?と、如何すればこれを回避して実行できるか分かる方がいればよろしくお願いします。 備考: (現状の緊急回避として記号のあるパスは記号のないパスから経由batを生成する方法を思いつきましたが自分で馬鹿だと思います) (経由バッチの中身が"C:\Temp\(a\echo.bat"ならば実行できるから) また、cmd /K "C:\Temp\(a\echo.bat" では実行できませんでした。 OSはXPです。コマンドプロンプトヴァージョンは(Microsoft Windows XP [Version 5.1.2600])です

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • バッチファイルでFINDSTRを使って文字列検索をしたいが、ファイルが

    バッチファイルでFINDSTRを使って文字列検索をしたいが、ファイルが開けない (1)と(2)のバッチファイルを作りました。それぞれ単体で実行すると、エラーは出ません。 (1)と(2)を一緒にした(3)というバッチファイルで実行すると、FINDSTRのところで、 「ファイルを開くことができません」というエラーが出て、途中でとまってしまいます。 エラーを出さずに実行する方法は何かないでしょうか? (A.batは、CドライブにあるWord.exeを実行するだけのバッチファイルです。) どうぞよろしくお願いします。 【(3)の中身】 call A.bat >kekka.txt   ←この1行だけが(1)のバッチファイルの中身です GOTO kensaku GOTO :EOF ::文字列検索 :kensaku SET keyword=作成しました。   ←この行から下が(2)のバッチファイルの中身です FINDSTR %keyword% kensaku.txt > NUL GOTO kekka%ERRORLEVEL% GOTO :EOF :kekka0 REM 文字列あり ECHO %keyword%がありました PAUSE > nul GOTO :EOF :kekka1 REM 文字列なし ECHO %keyword%はありませんでした。 PAUSE > nul GOTO :EOF

  • 外部ファイルを実行するには?

    お世話になります。 vb6で外部のバッチファイルを起動して、それを動作させようとしているのですが、うまくいきません。特にエラーにはならず、一瞬DOSプロントは立ち上がるんですが、バッチ処理しているログにはなにも書き込まれません。普通にバッチファイルをダブルクリックさせるか、コマンドからバッチファイルの入っているフォルダまでいって、バッチファイルを実行すれば書き込まれるのですが。 どこがまちがっているのでしょうか?shellじゃなくて、違う関数を使わなければいけないのでしょうか?ご教授よろしくお願いします。 なお、vb6でテストするときは▸マークの実行を押して、テストしました。 サンプル用のものです。 ↓test 現在の時間をログに記入 ■バッチファイルの中身(test.bat) echo test >> log.txt time/t >> log.txt ■vb6のファイルの中身 Private Sub Command1_Click() Dim ret as long ret = shell("cmd.exe /c C:\test\test.bat",4) End Sub

  • DOSプロンプトからFTPのスクリプトバッチが起動できない

    Win2000Proです。 以下のようなBATファイルとスクリプトバッチファイルを作成しました。 ---FTP.bat--- (1)pause (2)ftp -n -s:aaa.txt (3)pause ---aaa.txt--- op localhost user user pass ls close quit このBATファイルを実行すると(1)(2)文の無限ループになってしまい 肝心のftpコマンドは実行されません。 DOSプロンプトから手入力で入力すると実行はできます。 また、BATファイル自体、 (1)pause (2)dir (3)pause のように書き換えると問題なく実行できます。 (1)pause (2)ftp (3)pause のように書き換えても同じくループされます。 わかる方いらっしゃいますでしょうか? よろしくお願いします。

  • バッチファイルについて

    Tech Netセキュリティセンターから、更新ダウンロードした ファイルを複数同時にバッチファイルで処理したい場合、 どのようにバッチファイルを作ればいいのでしょうか?? 環境はWindowsXPです。 <1つに場合(ファイル名:test.bat)> cd "格納先" 更新ファイル名 pause ←DOS画面をストップさせる為、いちお記載 よろしくお願いします。

  • hostsファイルをコピーするバッチを実行するとデスクトップ上にtempフォルダが作成されてしまう

    hostsファイルをコピーするバッチファイルを作成しました。 バッチファイルの記述は以下のとおりです。 --------------------------------- @ECHO OFF CLS ECHO HOSTSファイルをアップデートします。 ECHO よろしければ、ENTERキーを押下してください。 ECHO 中止したい場合は、右上の×をクリックしてください。 PAUSE > NUL ECHO . ECHO HOSTSファイル コピー中... copy hosts %winDir%\system32\drivers\etc > NUL ECHO HOSTSファイル コピー終了 ECHO . ECHO アップデートが終了しました。 ECHO もう一度、ENTERキーを押下してください。 PAUSE > NUL EXIT -------------------------------------- バッチファイル(update.bat)とコピーするhostsファイルをまとめてexeファイルに変換し、exeファイルを実行してみると、hostsファイルは正常にコピーされるのですが同時にデスクトップ上に"c"というフォルダが作成されてしまいます。 cフォルダ内にはさらにwindowsフォルダが作成され、さらにwindowsフォルダ内にはtempフォルダが作成されていましたので、おそらくはc:\windowsフォルダ内のtempに記述されるべきものがユーザープロファイル内のデスクトップ上にできあがってしまうようなのですが、このcフォルダが作成されないようにするにはどうすればいいのでしょうか?

  • バッチファイルのPAUSE

    バッチファイルのPAUSEを使って、 実行するかどうか待機状態のまま 指定時間何もキーを触らなければ 自動的に黒のコマンドプロンプトを 終了させる方法はないですか?

  • ATコマンドからエグゼファイルが実行できない

    こんにちは。 ATコマンドで毎日10:00時に一回、あるバッチファイルを起動させる登録を行なっています。 しかしバッチファイルからVBで作成したエグゼファイルが実行されていないようです。 エグゼファイル(Project1.exe)は今はテスト用で実行させますとWindowが表示されるだけです。DOSプロンプトから実行させるとWindowはちゃんと表示します。 ログファイルを意図的にはかせてますが、終わりのログがはかれているのでバッチファイル自体は実行されているようなのですが。 どういった原因なのかこころあたりある方よろしくお願いします。 起動するバッチファイル(testbat.bat)の内容 C: echo "start" >C:\test.log Project1.exe echo "end" >C:\test.log

  • Ruby初心者です。

    Ruby初心者です。 Rubyから違うファイルを実行する場合について教えてください。 例えば、test.batに echo off echo. SET /p INPUT="Input string =>" echo %INPUT% pause のように記述されており これをRubyから実行し、 入力もRubyからするにはどうしたら良いでしょうか? つまり、Rubyからtest.batを実行し、自動で入力も行いたいです。 echoの内容もコマンドプロンプトから確認したいです。 また、RubyからBuildコマンドを実行したいと思います。 Buildは別プロセスで動いている状態になっていると思いますが、 Build中はRubyはどのような状態になるでしょうか? RubyからBuildした場合、Build動作が重くなることを懸念しています 有識者の方、よろしくお願いします。

    • ベストアンサー
    • Ruby

専門家に質問してみよう