1. FTP定時上傳下載與刪除文件
可能是你的分太少了吧,多給點分會有人來的。。。。
這個問題我的思路是通過windows的計劃任務結合批處理文件
計劃任務這個我就不詳細說了,網上很多資料。
然後是批處理命令,以下是我在另外一個問題的回答,你可以參考下:
—————————我是傳說中的分割線————————————
測試通過。
首先為dos命令下的bat文件:ftp.bat:
@echo off
REM 採用環境變數方式配置文件夾,日誌等
set BASE = d:
set DOWNLOAD_PATH = d:\gao
set UPLOAD_PATH = d:\hua
set LOG_PATH = d:\log
set LOG_FILE = d:\log\log.txt
REM 判斷目錄是否存在。估計目錄你早已建好,但是為了完整,還是寫上吧。
%BASE%
if not exist %DOWNLOAD_PATH% (
mkdir %DOWNLOAD_PATH%
)
if not exist %UPLOAD_PATH% (
mkdir %UPLOAD_PATH%
)
if not exist %LOG_PATH% (
mkdir %LOG_PATH%
)
REM 程序運行
echo ========================================== >> %LOG_FILE%
set DATET=%date%%time%
echo 程序開始運行,時間:%DATET% >> %LOG_FILE%
cd %DOWNLOAD_PATH%
REM 注意下面這句,其中,download.ftp為下載指令集,注意前面的地址。
ftp -n -s:"d:\download.ftp" >> %LOG_FILE%
echo 本次下載的文件如下:>> %LOG_FILE%
dir /B %DOWNLOAD_PATH\*.* >> %LOG_FILE%
echo 下載操作結束,時間:%DATET% >> %LOG_FILE%
REM 下面是上傳,基本類似。
ftp -n -s:"d:\upload.ftp">> %LOG_FILE%
echo 本次上傳的文件如下:>> %LOG_FILE%
dir /B %UPLOAD_PATH\*.* >> %LOG_FILE%
echo 上傳操作結束,時間:%DATET% >> %LOG_FILE%
echo ============================================ >> %LOG_FILE%
———————再次出現的分割線————————————
以下為下載指令集download.ftp:
open 192.168.1.150
user TEST
123
cd /home/ms/gh/out
prompt off
mget *.*
bye
———————不願出場的分割線————————————
以下為上傳指令集upload.ftp:
open 192.168.1.150
user TEST
123
cd /home/ms/gh/in
prompt off
mput *.*
bye
———————最後謝幕的分割線————————————
以上這些估計可以滿足你的要求了。
你可以參考此文件做一定的修改。
2. 請教高手,用批處理命令FTP自動下載文件。
① 如果我理解沒錯,遠端目錄,最深層的那個子目錄(名稱是日期)的那個,每天都是變的;你要下載的是裡面的文件(不含子目錄);文件下載到本地E:dzyl下,而且目錄也是按伺服器上的日期創建。
② 批處理固定每天運行,從伺服器前一天的目錄下載文件。
如果理解正確,那麼下面的代碼可以實現(已測試過),ip地址你需要修改!你的操作系統如果是英文,也需呀修改(具體看腳本中的提示)
@echooff&
set"ftp_site=19.6.5.34"
set"ftp_id=pracq"
set"ftp_pwd=123456"
set"ftp_remote_dir=/ftp/bos/at/pracq/"
set"ftp_local_dir=E:dzyl"
:100
set"ftpcmd={{%random%}}.ftp"
ifexist%ftpcmd%goto100
::英文系統用下面這個,把下面一行中的::去除
::set"today=%date:~6,4%%date:~0,2%%date:~3,2%"
::中文系統用下面這個,如果是英文,在下面一行句首添加::
set"today=%date:~0,4%%date:~5,2%%date:~8,2%"
settoday=!today:~0,4!-!today:~4,2!-!today:~-2!
call:Date2Day!today!1Yesterday
setftp_remote_dir=!ftp_remote_dir!!yesterday!
>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echobye
for/f%%iin('ftp-s:%ftpcmd%')doif{%%i}=={550}(
!
gotoend
)
setftp_local_dir=!ftp_local_dir!!yesterday!
md!ftp_local_dir!1>nul2>&1
ifnotexist!ftp_local_dir!(
!
gotoend
)
>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echolcd!ftp_local_dir!
>>%ftpcmd%echobinary
>>%ftpcmd%echopromptn
>>%ftpcmd%echomget*.*
>>%ftpcmd%echobye
set/acount=0
for/f%%iin('ftp-s:%ftpcmd%')do(
if{%%i}=={226}set/acount=!count%+1
)
if!count!gtr0(
echoDone.!count!file^(s^)downloaded.
)else(
echoNofilehasbeendownloaded.
)
gotoend
:Date2Day
::call:Date2Day2007-11-122Day
@echooff&setlocal
for/f"tokens=1-3delims=/-:,"%%ain('echo/%~1')do(
set/ayy=%%a,mm=100%%b%%100,dd=100%%c%%100
)
set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633
set/ai=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set/ad=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/add=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if%mm%LSS10setmm=0%mm%)&(if%dd%LSS10setdd=0%dd%)
endlocal&set%~3=%yy%%f%%mm%%f%%dd%&
goto:eof
:end
ifexist%ftpcmd%(typenul>%ftpcmd%&&del/f/q%ftpcmd%1>nul2>&1)
endlocal&@echoon
測試運行結果:
Done.5file(s)downloaded.