こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

バッチファイルからftpを実行時に処理完了を待たない方法

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

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

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

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

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

投稿日時 - 2010-03-25 14:37:34

QNo.5778348

困ってます

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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"に変更してみてください。

投稿日時 - 2010-03-25 15:19:35

補足

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

投稿日時 - 2010-03-25 16:51:09

お礼

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

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

投稿日時 - 2010-03-25 16:17:25

あなたにオススメの質問