人生最悪の忘れ物

ある市販のjava系のアプリから時間起動でバッチファイルを起動します
そのアプリは同時に複数のバッチファイルを起動できない仕様で
ある外部プログラム(バッチファイル)を起動したら処理の完了を
待ってから次の処理バッチファイルを起動するのです
同時起動はできません
なので最初に起動したバッチファイルがフリーズしてしまうと
次のバッチファイルが起動できずに永遠と待ち状態になってしまうんです

そのソフトのメーカーに問い合わせしてみたのですが
呼び出し側はタイムアウトさせるような設定はない仕様なので
呼び出ししたプログラムのほうでタイムアウトするようにして下さい
という回答でした

なんとか回避しようと
そのバッチファイルは
ftp -s:c:\cmd.txt
というようにftpコマンドを利用しているのですが
(稀に何らかの原因でftpがフリーズしてしまう現象があります)
ftpコマンドがフリーズしてしまったらどうしょうもないですよね・・・

この現象を回避したくて
バッチファイルを
start ftp -s:c:\cmd.txt
exit
に変更しました
こうすればftpの完了を待たずにバッチファイルが終了するので
たとえftpの処理が一つフリーズしてしまったとしても
別のバッチファイルの起動は問題なく行えると考えたからです

しかしその市販アプリが内部的にどのようにバッチファイルを起動しているかわからないのですがテストしてみましたところ
(ftpのコマンドをわざとquitしないようにして終了しないftp処理にして
バッチファイルを起動してみたのです)
結果としては起動したバッチファイルが完了したとはみなしてくれず
次のバッチファイル起動ができないまま永遠に待ち状態になってしまいました・・・
バッチファイルからftpコマンドを別プロセスで起動する
(ftpの完了を待たずにバッチファイルを終了させる)
という事はできないでしょうか?
アドバイスお願い致します

A 回答 (1件)

シェルスクリプトで実行したらどうでしょう?


下記をコピペして、xx.vbsとして保存します。

CreateObject("WScript.Shell").Run _
"CMD.exe /C ftp -s:c:\cmd.txt", 1, False

次に、"start ftp -s:c:\cmd.txt" このステップを
"cscript xx.vbs"に変更してみてください。

この回答への補足

ちなみにコマンドのタイムアウトを指定したくて
cscript xx.vbs //T:10
として実行してみたのですが
タスクマネージャを確認するとFTP.EXEが10秒たっても
終了しなかったんです
タイムアウトのパラメータ指定方法が違うのでしょうか?

補足日時:2010/03/25 16:51
    • good
    • 0
この回答へのお礼

ありがとうございます
目的の事ができました

もしご存知だったらでかまわないのですが
今後はwshよりpowershellのほうが主流になっていくと
思われるので
powershell2.0で同じ事をやろうとしたら
どのように処理すればいいでしょうか?

お礼日時:2010/03/25 16:17

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報