用DOS批處理實現FTP自動上傳、下載、清理文件

用DOS批處理實現FTP自動上傳、下載、清理文件
最近好像特別的忙,很久沒來寫點東西了,今天寫了一個利用批處理程序完成FTP自動上傳、下載、清理文件的程序。趕忙
記錄下來,以備往後之用。
功能介紹:自動登陸遠程主機,併到指定目錄下下載文件,下載完成後,檢查下載到本地的文件並刪除主機上的文件。
程序名稱及功能:
getfile.bat:主程序,檢查配置目錄及調用ftp腳本。
getfile.ftp:ftp運行腳本。
movefile.bat:刪除遠程主機上的文件。
如下是批處理的具體內容。
1.getfile.bat內容:
@echo off
REM 配置基本盤符,主目錄和文件存放目錄
set BASE=d: 
set BASE_PATH=D:\doc\一卡通\ftp
set LOG_FILE=%BASE_PATH%\ftpgetfile.log
set FLAG_FILE=%BASE_PATH%\tmp.tmp ##因要和另一個程序通信,因此用了這個狀態標誌文件,程序開始時寫0進去,
結束時再修改成1。這樣另外一個程序就能夠判斷什麼時候文件接收結束,並開始處理文件。
set SAVE_PATH=%BASE_PATH%
set TMP_PATH=%BASE_PATH%\temp
set REMOTE_PATH=/home/ecton/data/download/1234
REM 程序開始運行
echo =========================================================== >> %LOG_FILE%
set DATET=%date%%time%
echo 程序開始運行,時間:%DATET% >> %LOG_FILE%
%BASE%
if not exist %BASE_PATH% (
   mkdir %BASE_PATH%
)
if not exist %SAVE_PATH% (
   mkdir %SAVE_PATH%
)
if not exist %TMP_PATH% (
   mkdir %TMP_PATH%
)
cd %TMP_PATH%
echo 0 > %FLAG_FILE%
if not exist %SAVE_PATH% (
echo 沒法找到標誌文件%SAVE_PATH% >> %LOG_FILE%
goto _END
)
ftp -n -s:"%BASE_PATH%\getfile.ftp" >> %LOG_FILE%
echo 本次得到的文件以下:>> %LOG_FILE%
dir /B %TMP_PATH%\S*.edb > %TMP_PATH%\filelist.tmp ##本次接收的文件列表,供movefile.bat刪除文件的標識
dir /B %TMP_PATH%\*.edb >> %LOG_FILE%
move /Y %TMP_PATH%\*.edb %SAVE_PATH%\
FOR /F "usebackq delims=" %%i IN (`type filelist.tmp`) DO call %BASE_PATH%\movefile.bat %%i %LOG_FILE% %
REMOTE_PATH%
:_END
echo 1 > %FLAG_FILE%
del %TMP_PATH%\filelist.tmp
set DATET=%date%%time%
echo 程序運行結束,時間:%DATET% >> %LOG_FILE%
echo =========================================================== >> %LOG_FILE%
exit

2.getfile.ftp文件的內容:

open 192.168.0.208
user ecton
huateng
cd /home/ecton/data/download/1234
prompt off
mget *.edb #也能夠添加put、mput文件等其餘操做
cd /home/ecton/data/download/pub
mget *.edb
bye
quit
exit

3.movefile.bat文件的內容:

echo open 192.168.0.208 >ftp.txt
echo user ecton huateng >>ftp.txt
echo cd %3 >>ftp.txt
echo prompt off >>ftp.txt
echo delete %1 >>ftp.txt ##這裏是做刪除動做,也能夠rename
echo bye >>ftp.txt
echo quit >>ftp.txt
echo exit >>ftp.txt
ftp -n -s:ftp.txt >>%2
del ftp.txt
因windows下不能直接將參數傳給ftp腳本函數,因此不得不想出這麼一個愚蠢的辦法,用getfile.bat傳文件名給
movefile.bat,再由movefile.bat動態生成一個ftp腳本並執行。
 
轉:http://blog.csdn.net/qiuhan/article/details/6938786
相關文章
相關標籤/搜索