2013年5月26日 星期日

在 Windows 底下使用 FTP 批次指令碼-批次檔下Ftp指令

@echo off

set server=IP
set username=Ftp帳號
set password=Ftp密碼

::取得當日時間
set YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%

::檔案格式
set File=%YYYYMMDD%*_file*

set n=!!!
set i=!

:Filestart
echo open %server%>>ftp%i%.txt
echo user %username%>>ftp%i%.txt
echo %password%>>ftp%i%.txt
echo hash>>ftp%i%.txt
echo cd 路徑>>ftp%i%.txt
echo mget %File%>>ftp%i%.txt
echo y>>ftp%i%.txt
echo bye>>ftp%i%.txt

::確認是否成功下載,若無,則重新下載
ftp -s:ftp%i%.txt -n>>filerunresult%YYYYMMDD%.txt
if exist *_file* (
goto ok
) else (

::暫停一分鐘後下載
timeout 60

::若無成功下載,重覆三次
set i=%i%!
if %i%==%n% goto ok
goto Filestart
)

:ok
del ftp.txt
goto exit

:exit
exit

從事 MIS 的工作,就是要會用些小程式或簡單指令來簡化例行公事,列一下 FTP Client 在 Windows Command Line 模式下的自動化語法:

ftp -s:ACTION

ACTION 內容:

open 192.168.0.21 ← 連線到 FTP Server
ftpusr ← 帳號
user4ftp ← 密碼,明碼有安全疑慮
bi ← 切換成 binary 模式
prompt off ← 將提示關閉
lcd d:\pdaexe ← 切換本機端的目錄夾
cd pdadata ← 切換 FTP Server 上的目錄夾
mput *.exe ← 多檔案下載
quit ← 離開

相關參數(來自 Windows 內建說明檔):
-v
抑制顯示遠端伺服器的回應。
-n
抑制在初始連線時自動登入。
-i
關閉多檔案傳送期間的互動提示。
-d
啟用偵錯,以顯示用戶端與伺服器之間所傳遞的所有 ftp 指令。
-g
啟用檔案名稱通用慣例,以在本機檔案及路徑名稱中使用萬用字元 (* 與 ?) (請參閱線上 [指令參照] 中的 glob 指令)。
-s:filename
指定內含 ftp 指令的文字檔;此指令會在 ftp 啟動之後自動執行。此參數不可含有空格。請改以此參數取代重新導向 (>)。
-a
於連結資料連線時使用本機的介面。
-w:windowsize
覆寫預設的轉送緩衝區大小 4096。
computer
指定電腦名稱或要連線之遠端電腦的 IP 位址。指定此參數時,請務必將其置於行中的最後一個參數。