アプリ版:「スタンプのみでお礼する」機能のリリースについて

たとえば以下のようなバッチファイルとvbsファイルを用意して
test.batを実行した場合
ftpのダウンロード処理が完了した後
ダウンロードしたファイルを処理したいのです
以下のようにすれば処理待ちになるのでそこは
実現できるのですが
ftp.exeがなんらかの原因で稀に終了しない事があるので
そうなるといつまでも処理待ちになってしまうので
タイムアウトさせたいのです
ftpコマンドをあえてquitしないで(終了しない状態を再現させる)
WScript.timeout=10
をいれてみて試してみたのですが
タイムアウトが有効になりません
ftpのプロセスは最悪残ってしまってもかまわないのですが
起動をかけたバッチファイルのほうは永遠待ち状態ではなく
一定時間応答がなければ次の処理に移したいのです
何かいいタイムアウトの実装方法はないでしょうか?
アドバイスお願い致します

test.bat
cscript test.vbs ←ここでftp.exeが終了しないと永遠待ち状態になってしまう
rem ftpが完了後に行いたい処理
exit

test.vbs
WScript.timeout=10
CreateObject("WScript.Shell").Run "CMD.exe /C ftp -s:c:\cmd.txt", 1, True

A 回答 (2件)

スクリプト処理で時間がかかっている訳じゃないので、WSCript.timeoutでは駄目ですね。



こんな感じで。テストはしてません。この処理と無関係にftp.exeが動いてればそれも止めちゃいますけど、それで良ければ。

test.batの内容:
rem 監視スクリプトを非同期で起動
start kanshi.bat
rem ftpの起動
ftp -s:c:\cmd.txt
rem 次の処理


kanshi.batの内容:
rem 10秒待つ
ping -n 11 localhost
rem ftp.exeがあれば強制終了
taskkill /F /IM ftp.exe


そもそも何故ftpが終了しないのか調べるのが先だと思いますけど。大きなファイルを転送して時間がかかっている訳じゃないのですよね?
    • good
    • 0
この回答へのお礼

ありがとうございます
ftp.exeはなぜ終了しないのかはわかりません
転送しているのは数メガのファイルなので
5分ぐらいで終了するはずなのですが
この前は2日ぐらいずっとftp.exeが動いていました
プログラムから起動してたので
コマンドラインにどのようなメッセージが
流れていたのか確認できなかったんです

受信途中でなんらかのエラーが起きて
対話モードでyes/noを聞いてくるようなプロンプトが
でてたとか・・・
そんなのftpコマンドでありましたっけ?

もしネットワーク的なトラブルで
何かキーを押さないと次の処理に進まないような
ftpコマンドがあるなら
それを出さないようにする方法があるのでしょうか?

お礼日時:2010/03/28 12:00

#1です。

ftpサブコマンドで、応答を聞いてくるのは、prompt onモードの時の mget/mput/mdelete の時だけです。
どのコマンドの処理中に止まっているのかはログを見ればわかると思いますけど。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2010/04/10 18:05

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