dポイントプレゼントキャンペーン実施中!

バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。

バッチファイルでほかのバッチファイルを呼び出した後の処理で困っています。
どうぞ教えてください。

「A.bat」というバッチファイルを実行すると、「1.bat」というバッチファイルを
実行させ、「1.bat」の実行結果によって、処理を分岐させたいと考えています。

「1.bat」をcallで呼び出し、実行はできたのですが、「1.bat」は最後にエンタキーを
押さないと終了しないようになっています。そのため、「エンターキーを押して終了させて
ください」というメッセージが出たままの画面で終わってしまい、「A.bat」に帰ってくることが
できません。

「1.bat」は中身を扱えないようにしてあるバッチファイルなので、こちらでエンターキーを
押さずに終了させるようにはできません。何かいい方法はないでしょうか?

A 回答 (5件)

書いてるうちにNo.2さんと被る事になってしまいましたが。



>「1.bat」は中身を扱えないようにしてある

とは、1.bat を編集できないようになってる、という事でしょうか。
編集できるなら Pause なりが入ってるだけでしょうから、削ればいいだけだと思うのですが。
どういう仕組みかわかりませんが、編集できない、という前提で話を進めると...

つまり 1.bat 内でキー入力待ちで止まってしまうが、
これを人力に頼らず自動的に進めたい、という事ですよね。

プログラムが文字入力+<Enter>を要求する時、
予めテキストファイルを作っておき、

Prograname <TEXTFILE.TXT

のように文字 "<" を使ってリダイレクトすると
入力しなくてもテキストファイルから1行を代入して先へ進みます。

試しに、<CR>だけのテキストファイルを作っておき、
1.bat < TEXTFILE.TXT
として読ませてみたら、先に進みました。

A.bat 内で 1.bat を呼ぶ時に
1.bat < TEXTFILE.TXT
のように記述しておきます。

バッチ内容の複雑さによってはうまくいかないかも知れませんが、
試してみたらいかがでしょう。

この回答への補足

困っていたことですが、自己解決することができました。

時間を割いていただき、ありがとうございました。

補足日時:2010/09/30 08:57
    • good
    • 0
この回答へのお礼

丁寧な回答、ありがとうございます。
無事に解決することができました。

おっしゃるとおり、編集できないバッチファイルとなっており、大変困っていました。


解決することができたのですが、次の動作で新たに困ったことが出てきました。
もしわかれば教えてください。

「1.bat」を実行すると、「成功しました」「失敗しました」の2通りの文字列が画面に出た後、
エンターキーの入力を求めてきます。

「成功しました」と出れば「2.bat」を実行、「失敗しました」と出れば、もう一回「1.bat」を
実行するように処理を分岐したいのです。

画面に出た結果(「成功しました」または「失敗しました」)の文字列をコピーして、
先ほど教えたもらったやり方で、エンターキーを押して終了し、元のバッチファイルで
コピーした文字列によって処理を分岐することは可能でしょうか?

お礼日時:2010/09/29 15:49

call 1.bat < nul


ではどうでしょうか
    • good
    • 1
この回答へのお礼

お返事、ありがとうございます。

やってみましたが、うまくいきませんでした。

No.2、No.4の方の回答で解決することができました。

お礼日時:2010/09/29 15:37

http://tooljp.com/bat_qa/A421937B908746364925737 …
callで呼び出せば終了してからの制御は戻ります。


[a.batの中身]

call 1.bat
if %ERRORLEVEL%==1 echo エラー
    • good
    • 0
この回答へのお礼

ありがとうございます。

終了してからの制御は戻るのですが、自分でキーを押さずに、
自動的に戻したかったのです。

No.2、No.4の方の回答で解決することができました。

お礼日時:2010/09/29 15:38

参考URLの方法で解決できるのではないかと思います。



参考URL:http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/ca …
    • good
    • 0
この回答へのお礼

ありがとうございました。
求めていた情報でした。

お礼日時:2010/09/29 15:26

文面から、



現在の状況はだいたいわかりますが、  これをどのような動作をするように

したいのかが、分かりません。


A.bat の振る舞い、 1.bat の振る舞い を教えてください。

この回答への補足

新たに困っていたことですが、自己解決できました。
ありがとうございました。

補足日時:2010/09/30 08:56
    • good
    • 0
この回答へのお礼

質問の仕方が悪くて、すみません。
先ほどした質問は、No.2、No.4の方の回答によって解決することができたのですが、
新たに困ったことが出てきたので、こちらも教えていただけるとありがたいです。

3つあるバッチファイルを1つ1つ手動で実行していたのですが、
面倒なので、自動的に次々にバッチファイルを実行していくバッチファイルを作成しています。
それが「A.bat」です。

以下の作業をすべて自動でやってくれたらいいなあと思って作ってます。


1.「1.bat」を実行する
2.実行結果が画面に表示された後、エンターキーを入力して「1.bat」は終了
3.「1.bat」の実行結果が「成功しました」と表示されていたら、「2.bat」を実行する
  「失敗しました」と表示されていたら、再度1番の手順からやり直し
4.「3.bat」を実行する
  
先ほどは、2番の手順のエンターキーを入力するところで困っていたのですが、
今は、「成功しました」「失敗しました」の実行結果を「A.bat」で判断し、分岐処理
をさせるところで困っています。

お礼日時:2010/09/29 16:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!