- PR -

bat実行でexeプログラムを複数回繰り返すのは不可能?

1
投稿者投稿内容
ナゾゲウム
会議室デビュー日: 2008/05/28
投稿数: 13
投稿日時: 2008-05-28 18:58
もしかしたらそもそも出来ないことなのかもしれませんが
不勉強の為存知上げないままに質問してしまいますことをご容赦ください。

バッチファイル(.bat)にfor文で繰り返し実行したい文があります。
但しこの文はコマンドではなく、プログラム(exe)なのですが、
試しにbatを実行してみたところ、最初の処理だけ実行されて
バッチファイルが終了してしまいます。
exeではなく、DOSコマンドで同じfor文を試したところ、こちらは
問題なく繰り返し動作しました。
なので、exe実行が繰り返しできないのではと思った次第なのですが、
その認識は正しいでしょうか。
また、もし代替案をご存知の方がいらっしゃいましたら
お手数ですがご教授頂けないでしょうか。

以上宜しくお願い致します。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-28 20:55
最終的にやりたいことが何かわかりませんが、たぶんこんな感じでOKなはず。

コード:

@echo off

set TEXT1=C:\work\data01.txt

for /f %%z in (%TEXT1%) do call :Dowork %%z

exit /b

:Dowork
start notepad.exe %1



詳しくは start /? の説明を参照。

[追記]
バックグラウンドで実行したいのかな? と予想したのが上の回答ですが、
逐次的でよいのであれば、startを取り外してください。
この場合、開いたメモ帳を閉じると次のメモ帳が開くといった動きになります。
[/追記]

[ メッセージ編集済み 編集者: rain 編集日時 2008-05-28 22:05 ]

[ メッセージ編集済み 編集者: rain 編集日時 2008-05-28 22:05 ]
ナゾゲウム
会議室デビュー日: 2008/05/28
投稿数: 13
投稿日時: 2008-05-29 10:21
rainさん
またまたご回答ありがとうございます。
notepadのように単純な起動プログラムであれば動くのですが、
今動かしたいプログラムは業務処理用のプログラムでして、
exeを実行するとアプリケーション内で処理されて
結果(リターンコード)を専用ログに出力するという代物です。
このようなプログラムだと同じfor文でも一回処理が終了すると
その時点でバッチファイルも閉じてしまうのです。

通常はその操作をOSから実行するのではなく、GUI操作で
実行(バックグラウンドでOSプログラムが実行される)するもの
なのですが、処理件数の増加に伴ってGUI操作で1件1件処理
するよりもバッチファイルで一括実行させた方が運用し易いと
考えている次第です。

やはりこのような処理系プログラムはバッチファイル実行には
不向きなのでしょうか。。。?
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-29 10:40
引用:

ナゾゲウムさんの書き込み (2008-05-29 10:21) より:

notepadのように単純な起動プログラムであれば動くのですが、
今動かしたいプログラムは業務処理用のプログラムでして、
exeを実行するとアプリケーション内で処理されて
結果(リターンコード)を専用ログに出力するという代物です。
このようなプログラムだと同じfor文でも一回処理が終了すると
その時点でバッチファイルも閉じてしまうのです。



だとすると、バッチファイルでは厳しいと思います。
起動用に別途プログラムを作成されたほうがよいかもしれません。
# vbsなどのスクリプト言語でも可能かもしれませんが、ちょっと私にはわかりません。

(だめな理由を考えてみました)
例えば、先のバッチファイルの最終行に exit を置くと、for文の1回のループでバッチファイルが終了してしまいます。
おそらくそのプログラムが終了するときにも、同じようなことが行われているのだと思います。
だっちょ
大ベテラン
会議室デビュー日: 2006/12/05
投稿数: 115
投稿日時: 2008-05-29 10:54
exeコマンドの前にcmd /C をつけてもだめですか?
みなと
大ベテラン
会議室デビュー日: 2002/06/14
投稿数: 202
お住まい・勤務地: Q州地方の日本海側
投稿日時: 2008-05-29 10:58
こんにちは。

うろおぼえですが、過去、ただそのexeをkickするだけの
batをつくってstartさせて回避したような
気がします。

以上、参考になれば。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-29 11:06
引用:

だっちょさんの書き込み (2008-05-29 10:54) より:
exeコマンドの前にcmd /C をつけてもだめですか?


それだ!

というわけですみません、さっきの私の発言はスルーしてください m(_ _)m
# バッチファイルは久しぶりに書いたけど奥が深い..
ナゾゲウム
会議室デビュー日: 2008/05/28
投稿数: 13
投稿日時: 2008-05-29 11:27
rainさん みなとさん だっちょさん

ご回答ありがとうございました。
お蔭様で動かすことができました!
cmd /C でしたか。。

皆様本当にありがとうございました。
めちゃめちゃ助かりました。
1

スキルアップ/キャリアアップ(JOB@IT)