• 締切済み

startコマンドについて

2年前に納品されたシステムで、今年の8月中旬と下旬に2度電源が落ち(1度目は停電?、2度目は間違ってコンセントを抜いたらしい)、あるソフトが頻繁に参照/更新している作業ファイルの中身が消えてしまい、正常動作しなくなる事がありました。 本来なら、そのソフトが作業ファイルを頻繁に参照/更新する処理を改造すべきだと思うのですが、製作者が長期休暇(体調不良)に入っている為、最新のソースが手に入りません。 作業ファイルの中身があれば($$$=**等)正常に動作するので、元になる作業ファイルを準備しておき、そのファイルをコピー後、そのソフトが起動するバッチファイルを作成し、スタートアップでコールされるショートカットと入れ替えました。 バッチファイルでそのままソフトを実行すると、そのソフトが終了するまでDOS窓が開いたままとなるので、「startコマンド」を使用しました。 バッチファイルは、以下の通りです。 ECHO OFF copy ABC1_Base.dat ABC1.dat copy ABC2_Base.dat ABC2.dat copy ABC3_Base.dat ABC3.dat start ABC.exe EXIT この対応を9月16日に行ったのですが、それから2度、 Runtime Error! Program:C:\Program Files\~\XYZ.EXE abnormal program termination が発生しました。 ※「XYZ.EXE」は、「ABC.exe」が起動し、「XYZ.EXE」が起動していなければ Shell関数で起動させるソフトです。 ※ABC.exe:VisualBasic6.0にて作成 ※XYZ.exe:VisualC++6.0にて作成 2年前に納品されてから、1度も「Runtime Error」は起きていない為、「startコマンド」が原因ではないかと上司から指摘されました。 「startコマンド」でぐぐって調べてみましたが、「Runtime Error」が起きたという報告は見付かりませんでした。 どなたか、「startコマンド」についての情報をお持ちの方はいらっしゃいませんか? 長文となってしまいましたが、よろしくお願いします。

みんなの回答

  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.3

runtimeエラーの内容によりますね。 >2年前に納品されてから、1度も「Runtime Error」は起きていない為、「startコマンド」が原因ではないかと上司から指摘されました。 プログラムの潜在バグが顕在化しただけかもしれません。 >copy ABC1_Base.dat ABC1.dat copyが失敗している可能性はないですか? 例えば、上記のコマンドは「カレントディレクトリのファイルをカレントディレクトリ」にコピーします。カレントディレクトリ・カレントドライブにファイルが無ければ失敗しています。フルパスを指定するか、カレントディレクトリを変更するのが常道だと思います。copyの結果に関わらずABC.exeを起動していますのが気になるなあ。テンポラリファイルをカレントディレクトリに作成しようとして失敗しているとか。 startは関係ないと思います。startからpathを含めた環境変数は引き継がれますので... まあ、ソースを見ないとなんとも。自分ならruntimeエラーの原因を探りますけど。

taka077
質問者

お礼

回答、ありがとうございます。 >copyが失敗している可能性はないですか? 正確に記述すると、 copy ABC1_Base.dat D:\システムのフォルダ名\TEMP\ABC1.dat ですが、何度もコピー先のファイルの中身を消去し、実行後にコピー先のファイルの中身が「ABC1_Base.dat」と同じになっているのを確認しています。(3つのファイル全て)

taka077
質問者

補足

補足ですが、copyに失敗しても、元の「ABC1.dat」は存在しますので、参照した時、「$$$=**」が見付からず、デフォルト値で渡している0が返るだけですので、見た目は正常に動作しているように見えます。 最初に記述した >正常動作しなくなる事がありました。 は、「$$$=**」等が消えてしまい、常に0が返り、処理する件数が0件でシステム的に正常動作しないという事です。(この場合は、「Rumtime Error」は発生していません。) 説明が足りませんでした。すみません。 やはり、 >プログラムの潜在バグが顕在化しただけかもしれません。 の可能性が高いですかね...。

noname#109697
noname#109697
回答No.2

参考としてですが、ランタイムエラーが発生すると言う事は、やはりVisualBasic、VisualC++ のランタイムに問題が在るのでは? http://www.microsoft.com/downloads/details.aspx?FamilyID=a8494edb-2e89-4676-a16a-5c5477cb9713&DisplayLang=ja 尚、あくまで参考としての回答ですので、上記プログラムを適用する場合は、質問者様ご自身の判断で行って下さい。(既に適用済みの場合は、ご容赦下さい) ご参考までに...

taka077
質問者

お礼

回答、ありがとうございます。 VisualBasic6.0,VisualC++6.0ともに、SP6は適用しています。 補足 Windows XP Pro SP2

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

こんにちは  startコマンドが作られた経緯は、シェルがバッチの中で実行されるコマンドの終了を待たずに次々起動する性質を解決するため、コマンドの実行終了を待つ「start /wait」が求められたことによります。  御質問では、実行直後に不具合が生じたのか実行後しばらく経ってから不具合が生じたのか明確ではありません。  実行直後だとしたら copy コマンドの終了を待たずに ABC が実行されたか、 実行後しばらく経ってだとしたら ABC コマンドの終了を待たずに強制終了させた。かもしれません。  行末の EXIT が気になります。

taka077
質問者

お礼

早速の回答、ありがとうございます。 説明が足りませんでした。 1回目のエラー発生は実行から4日後、2回目のエラー発生は3日後のようです。(どちらも連休中の為、正確性に欠けますが、通信相手のログでタイムアウトが始まったのがその頃ですので...) 動作環境は、 WindowsXP Pro メモリは2GB積んでます。 ※ABC.exe、XYZ.exeともに、24時間稼動するソフトです。 現在、エラー発生までの通信回数等を調査中ですが、何か情報がありましたら、よろしくお願いします。

関連するQ&A