• ベストアンサー

バッチファイルが不正終了してしまう行をつきとめたい

長いバッチファイルを実行中、途中で不正終了してしまう場合に、そのバッチファイルの何行目を実行した時に不正終了したのかをつきとめたいのですが、何か方法はあるでしょうか。 又は、現在バッチファイルの何行目であるかを表示するコマンド等無いでしょうか。 ご存知の方がおられましたら、宜しくお願い致します。

  • kon77
  • お礼率97% (92/94)

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

  • ベストアンサー
  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.5

最後の行にpauseかcmd.exe /k プログラム名 とすると閉じませんので、ダブルクリックで起動して閉じない設定にできます。

kon77
質問者

お礼

ご回答、ありがとうございます。 「/k」オプションで終了しないように出来たのですね。知りませんでした。大変勉強になりました。ありがとうございました。これで全て環境は整いました。 ご回答、本当にありがとうございました。

kon77
質問者

補足

今作業していますが、後は時間の問題で、どうにか原因を突き止められそうです。ご回答下さった皆さん、本当にありがとうございました。

その他の回答 (4)

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

>DOS窓自体が閉じてしまう様な不正終了の場合は特定が困難です。 もしかして、バッチファイルをダブルクリックして実行していますか? そうじゃなくて、コマンドプロンプトを開いて、バッチファイル名を打ち込んで実行してください。 そうやればエラーで閉じてしまうことはないのでecho offしてなければわかります。

kon77
質問者

お礼

ご回答、ありがとうございます。 お教え頂いた通りにやってみましたら、見事に自分が求めていた動作をしてくれました。ありがとうございました。 ただ、これはやはり、一度コマンドプロンプトを起動して、バッチファイルのパスを打ち込むか、D&Dして実行するかしないといけないのですよね。 ショートカットから実行してみたのですが、うまく動作してくれなかったので、毎回コマンドプロンプトを起動して、バッチファイルを実行しないといけないのですよね。 エラーをつきとめるまで、しばらくこの方法でやってみようと思います。 これでうまく行きそうな気がします。 ご回答、本当にありがとうございました。

  • kawais070
  • ベストアンサー率52% (2242/4282)
回答No.3

http://www.forest.impress.co.jp/docs/review/20140204_633694.html 上記の開発ツールがいい感じ。

kon77
質問者

お礼

ご回答、ありがとうございます。 お教え頂いたツールを試してみたのですが、DOS窓は不正終了せず続いているのに、ツール側で「何かのエラーです。」というダイアログが何度も表示されてしまって、残念ながらうまく行きませんでした。 わざわざ探して下さり、本当にありがとうございまいました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

echo を入れてリダイレクトで結果をファイルに出力とか?

kon77
質問者

お礼

ご回答、ありがとうございます。 確かにそれを考えたのですが、バッチファイル自体が長く、全てのコマンドの前に気長にechoを打ち込んでいってもよいのですが、結構しんどい作業になってしまいますので、他に方法はないものかと思って質問させて頂きました。 やはり、他に方法がなければそうしようと思います。 ご回答、本当にありがとうございました。

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

1行目を echo off であったとしたらそれを削除すれば何を実行しているかを表示するのでそれで良いのでは。

kon77
質問者

お礼

ご回答、ありがとうございます。 確かに、一行目は「@echo off」にしているのですが、それを削除してもDOS窓の中を流れる処理を目視で追うのは困難ですし、「pause」を使うにしても、DOS窓自体が閉じてしまう様な不正終了の場合は特定が困難です。 今回起きている不正終了は、毎回起きる訳ではなく、ループ処理中に、恐らく扱うデータの内容により、不正終了したり、しなかったりしているのだと思います。 うまくループ処理を通過してくれる場合もあるのですが、稀に不正終了が起きている状態です。 ご回答、本当にありがとうございました。

関連するQ&A

  • バッチを1行記述した時の %TIME% について

    バッチファイルの行を、&で連結して1行で実行できるのですが、この際 %TIME% の値が、バッチファイルとして動かしたときと異なるため、理由や対策方法を御存知の方が、おられましたら、アドバイスを頂ければと存じます。 ■入力コマンド行 CLS & ECHO 開始時刻:%TIME% & TIMEOUT /t 2 & ECHO. & ECHO 終了時刻:%TIME% ■期待値 現在時刻が表示 2秒待機のメッセージが表示 2秒後の時刻が表示 ■実際の相違 終了時点の時刻は開始の2秒後になっていることを期待しているのですが、実際には待ち時間を幾ら増やしても、開始時刻が表示されてしまいます。 ■実行例 開始時刻:17:35:58.34 2→1→0 秒待っています。続行するには何かキーを押してください ... 終了時刻:17:35:58.34 ■背景 大きなファイルをコピーするとき、どのくらい時間が掛かるのかな?をメモする意味で、1行バッチで記述してみたのですが、どんなに大きなファイルを記述しても、終了時刻が開始時刻と同じ文字列で表示されることから、コピー部分を2秒待ちのコマンドに置き換えて、今回の質問に至りました。 コマンド1つづつ 改行してバッチファイルにして動作させると、終了時刻が更新されているのですが、1行で記述すると、終了時刻が開始時刻になっちゃうんです・・・ 原因や、解決方法(1行で期待した終了時刻を表示)をお解りの方がおられましたら、ぜひアドバイスを宜しくお願い致します。

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

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

  • バッチ処理中のコマンドの自動強制終了

    Windows7で、バッチファイルから複数のコマンドを実行しています。 あるコマンドの実行が一定時間以上になったらそのコマンドを強制終了して、次のコマンドに移るようにする方法を教えてください。 例えば、下記のバッチファイルがあるとします。 バッチファイル開始 programA programB programC バッチファイル終了 以上を実行した際に、programBの実行時間が1分以上になったらprogramBを自動的に強制終了して 次のprogramCを実行する必要があります。 また、ユーザーが起動するプログラムは、上記のバッチプログラムだけとします。 また、ダイアログボックスやメッセージwindow等のGUIは表示したくないです。 このようなことを実現する方法を教えてください。

  • システム終了時にバッチファイルやプログラムを実行するには

    WindowsXPでは、タスク機能を使って特定の時刻や、ログオン時にプログラムを実行できますが、「システム終了時」は選択肢としてありません。 質問なのですが、スタートメニューから終了を選んだときに、終了する前にプログラムやバッチファイルを実行できるように出来ますでしょうか。 現在は、バッチファイルを作り、プログラムを実行した後にshutdownコマンドで終了させていますが、できればWindowsの通常の終了操作を実行する際にプログラムを実行できれば、と考えています。 どうぞよろしくお願いします。

  • バッチファイルでMDBを終了したい。

    いつもお世話になっています。 今回はあるmdbファイルをバッチファイルを使って終了させたいのです。 例えば、Dドライブ直下に123.MDBというファイルがあります。これを19:00に終了させたいのですがどうしたらいいのでしょうか?バッチファイルを作成できればタスクマネージャーを19:00に実行して終了させようかと思っています。MDBのタイマーイベントは別で使用している為、使えません。コマンドプロンプト等でなんとか・・・ ご理解いただけましたでしょうか? よろしくお願いします。

  • バッチファイル終了時にウィンドウを閉じる

    超初心者です。 バッチファイルを終了時にDOSのウィンドウを閉じるという方法は このページを見てできたのですが、 そのバッチファイルを社内のイントラネットのページに掲載し、 そのリンクをクリックし、「この場所からプログラムを上記のプログラムを実行する」にするとプログラム終了後もDOSのウィンドウが残ったままになってしまいます。 ページから実行せずにバッチファイルを直接実行するとウィンドウは プログラム終了後閉じます。 IEのバージョンが5.0以下だとどうもそうなるような感じです。 どうすれば、ページのリンクから実行しても確実にDOSのウィンドウを終了することができるでしょうか? どなかたご存知の方いらっしゃいましたら教えてください。

  • バッチファイル

    コマンドプロンプトから実行するコマンド 2つを、100回繰り返したいのですが、 バッチファイルで100回繰り返すにはどうしたらよいでしょうか? 単純にForで出来ると思っていたのですが、 dosのバッチファイルのforはちょっと違うみたいで、ほかの言語のように for(){繰り返したい処理} ということが出来ないみたいで、 しかも変数<100というのも出来ない? ようで(INで0 1 2 3・・・のように指定するのですね・・・?) 戸惑っています。 変数を使ってインデントして100で終了させようと思ったのですが、変数も使えない・・・??のですね。(使えるのでしょうか??) そこでWSHで一セット分のコマンドのバッチファイルを作ってWSHからそれを100回呼ぼうかと思ったのですが、いまいち方法がわかりません。 また、wshの中で直接dosコマンドが使えると最もよいのですが・・・。 詳しい方がいましたら教えていただけると幸いです。

  • バッチファイルで常に最新の現在時刻を表示したい

    バッチファイルで最新の現在時刻を表示したいのですが、うまく行きません。 そのバッチファイル自体を実行した時刻ではなく、そのバッチファイル内のコマンド等を実行した時刻を表示させたいのです。つまりどんどん時間を最新に近いものに更新させていって欲しいのです。 タスクスケジューラのようなものをバッチファイルで作りたくて、現在時刻が○○時であればこのコマンドを実行する、といったことがしたい訳です。 バッチファイルは実行してすぐ終了するのではなく、そのまま常駐するような形を想定しています。 なにか良い方法はないでしょうか。 ■ 5秒おきに現在時刻を表示するバッチファイルの例 (同じ時刻になってしまう) @echo off :start set time=%time: =0% echo . echo . echo .「現在時刻は%time:~-11,2%時%time:~-8,2%分%time:~-5,2%秒です。」 echo . echo . ping localhost -n 5 goto start

  • バッチファイルの作成

    お世話になっております。 バッチファイルの作成方法について、只今勉強中です。 現在、毎日行われている作業をバッチファイルで自動化が出来ないか検討しておりますが、バッチファイルの編集に苦戦していて困っております・・・ ---実行したい事--- 0.以下、作業の流れをコマンドプロンプト上で表示する。 1.C:\ツール\batというフォルダに移動する。 2.batフォルダに新しく「file」というフォルダを作成 3.batフォルダ内には「bat_YYYY/MM/DD.txt」という日付のテキストがあり、該当する日付のテキストをコピーしてfileフォルダへ貼り付ける。 4.fileフォルダへ移動する。 ---終了--- 手順を全部書いてしまっているのですが、途中まではバッチファイルの編集をする事が出来ました。しかし、正解しているか不安です。 ご教授の程、宜しく御願い致します。

  • バッチファイルを実行後、終了のお知らせ。

    バッチファイルを実行し、その終了後、ポップアップのような「終了しました」みたいなメッセージを表示させたいのですが、どのような方法があるでしょうか? OSはWindows2000 server SP4です。

専門家に質問してみよう