定時ftp下載檔案(檔名規則為前一日期)?

通過ftp方式每天下載檔案很麻煩,我們可以做個批處理檔案,利用windows定時任務功能,每天自動完成。檔名含有日期並且是前一日期就需如下處理:

工具/原料

windows作業系統

已經開通FTP服務

方法/步驟

建批處理檔案ftpget.bat,內容如下:

@echo off

rem 計算指定天數之前的日期

set DaysAgo=1

rem 假設系統日期的格式為yyyy-mm-dd

call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays

set /a PassDays-=%DaysAgo%

call :DaysToDate %PassDays% DstYear DstMonth DstDay

set DstDate=%DstYear%%DstMonth%%DstDay%

echo %DaysAgo%天的日期是%DstDate%

echo %DstDate% /*計算前日日期*/

echo open 192.168.1.1>>a.txt /*連線遠端ftp伺服器192.168.86.8寫入a.txt*/

echo username>>a.txt /*使用者名稱寫入a.txt*/

echo password>>a.txt /*密碼寫入a.txt*/

echo get ZJ_%DstDate%.txt.zip>>a.txt /*檔名寫入a.txt*/

echo bye>>a.txt

ftp -s:a.txt

del a.txt /q

pause

goto :eof

:DateToDays %yy% %mm% %dd% days

setlocal ENABLEEXTENSIONS

set yy=%1&set mm=%2&set dd=%3

if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)

set /a dd=100%dd%%%100,mm=100%mm%%%100

set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2

set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633

endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd

setlocal ENABLEEXTENSIONS

set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a

set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5

set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10

(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)

endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF

開啟“控制面板”,選擇“系統和安全”

定時ftp下載檔案(檔名規則為前一日期)

選擇"管理工具"——>“計劃任務”

定時ftp下載檔案(檔名規則為前一日期)

右擊“任務計劃程式庫”——>“建立基本任務”

定時ftp下載檔案(檔名規則為前一日期)

輸入一個任務名稱,例如:ftp_get

定時ftp下載檔案(檔名規則為前一日期)

選擇任務執行的頻率

定時ftp下載檔案(檔名規則為前一日期)

設定任務執行的時間

定時ftp下載檔案(檔名規則為前一日期)

定時ftp下載檔案(檔名規則為前一日期)

選擇批處理檔案ftp_get.bat所在的路徑

定時ftp下載檔案(檔名規則為前一日期)

定時ftp下載檔案(檔名規則為前一日期)

完成後可以看到在任務計劃程式庫中增加一條記錄

定時ftp下載檔案(檔名規則為前一日期)

注意事項

確保已經和FTP伺服器連通

相關問題答案