2016-04-20 9 views
1

FTPを使用してテキストファイルを取得し、遅延10秒で永久に実行できるバッチファイルを探しています。 10秒ごとにFTPを使用してテキストファイルを取得

この

は私のコードです:

:loop 

ftp -i -s:"%~f0"&GOTO:EOF 
open Server_IPADDRESS 
userName 
Password 
get test.txt 
close 

TIMEOUT 10 
goto loop 

私はエラーを得続ける

ftp> TIMEOUT 10 
Invalid command. 
ftp> goto loop 
Invalid command. 

私がしたいことはftpを終了し、通常のcmdに戻ることですが、私はそれを動作させることができません。

答えて

2

-s:"%~f0"の機能を理解していることを確認してください。

FTPスクリプトの場合と同様に、ftp.exeは、バッチファイル自体を実行するように指示します。

ftp.exeは、バッチファイルを実行し、それは:

  • はあなたに:loopftp.exeライン用の2つの"無効なコマンド"エラーが発生します。
  • 実際のFTPスクリプト
  • を実行し、あなたにTIMEOUT 10goto loopコマンド用の2つの「無効なコマンド」エラーが発生します。一方

、バッチファイルインタープリタ(cmd.exe)を効果的にバッチファイルを解釈停止することを告げるものを、GOTO:EOFを見ています。したがって、TIMEOUT 10goto loopは決して実行されません。


あなたがする必要があります。

  • 変更だけTIMEOUT 10コマンドの前にジャンプするGOTO:EOF
  • 「無効なコマンド」エラーの後者のセットからあなたを惜しまし、byeコマンドを使用してclose後に停止するftp.exeを教えてください。

    FTPスクリプト(ftp.txt):

    open Server_IPADDRESS 
    userName 
    Password 
    get test.txt 
    close 
    

    バッチファイル:

:loop 

ftp -i -s:"%~f0"&GOTO:afterftp 
open Server_IPADDRESS 
userName 
Password 
get test.txt 
close 
bye 

:afterftp 
TIMEOUT 10 
goto loop 

より堅牢な

けれどもの方法は、FTPスクリプトやバッチファイルを分離することである

:loop 

ftp -i -s:ftp.txt 

TIMEOUT 10 
goto loop 

またはFTPスクリプト用の一時ファイルを使用します。

:loop 

echo open Server_IPADDRESS> ftp.txt 
echo userName>> ftp.txt 
echo Password>> ftp.txt 
echo get test.txt>> ftp.txt 
echo close>> ftp.txt 

ftp -i -s:ftp.txt 

del ftp.txt 

TIMEOUT 10 
goto loop 

(実際には、不要のすべてのループ内に再作成ftp.txt

関連する問題