• 締切済み

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

ある市販のjava系のアプリから時間起動でバッチファイルを起動します そのアプリは同時に複数のバッチファイルを起動できない仕様で ある外部プログラム(バッチファイル)を起動したら処理の完了を 待ってから次の処理バッチファイルを起動するのです 同時起動はできません なので最初に起動したバッチファイルがフリーズしてしまうと 次のバッチファイルが起動できずに永遠と待ち状態になってしまうんです そのソフトのメーカーに問い合わせしてみたのですが 呼び出し側はタイムアウトさせるような設定はない仕様なので 呼び出ししたプログラムのほうでタイムアウトするようにして下さい という回答でした なんとか回避しようと そのバッチファイルは ftp -s:c:\cmd.txt というようにftpコマンドを利用しているのですが (稀に何らかの原因でftpがフリーズしてしまう現象があります) ftpコマンドがフリーズしてしまったらどうしょうもないですよね・・・ この現象を回避したくて バッチファイルを start ftp -s:c:\cmd.txt exit に変更しました こうすればftpの完了を待たずにバッチファイルが終了するので たとえftpの処理が一つフリーズしてしまったとしても 別のバッチファイルの起動は問題なく行えると考えたからです しかしその市販アプリが内部的にどのようにバッチファイルを起動しているかわからないのですがテストしてみましたところ (ftpのコマンドをわざとquitしないようにして終了しないftp処理にして バッチファイルを起動してみたのです) 結果としては起動したバッチファイルが完了したとはみなしてくれず 次のバッチファイル起動ができないまま永遠に待ち状態になってしまいました・・・ バッチファイルからftpコマンドを別プロセスで起動する (ftpの完了を待たずにバッチファイルを終了させる) という事はできないでしょうか? アドバイスお願い致します

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.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"に変更してみてください。

ken090301
質問者

お礼

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

ken090301
質問者

補足

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

関連するQ&A