国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > BAT > 正文

使用FTP下載目錄,即FTP命令批量自動下載的bat文件

2020-03-29 20:23:38
字體:
來源:轉載
供稿:網友
FTP不支持目錄的下載,不過FTP命令提供了mget命令,允許多文件下載,但每下載一個文件都需要確認,不能自動完成。本文主要介紹使用批處理,結合FTP的相關命令來實現批量文件的下載,以便達到目錄下載的目的。

  大致想法如下:

FTP,FTP命令,bat文件ftp -s:filename hosts >result.txt 執行腳本,并將結果定向輸出到result.txt
FTP,FTP命令,bat文件腳本內容,如
FTP,FTP命令,bat文件
cd mydir
FTP,FTP命令,bat文件ls
FTP,FTP命令,bat文件bye
FTP,FTP命令,bat文件可以將mydir命令列出
FTP,FTP命令,bat文件然后使用批處理分析result
.txt
FTP,FTP命令,bat文件從150 Opening ASCII 
mode data connection for file list.的下一行開始算,直到226 Transfer complete都是要下載的內容
FTP,FTP命令,bat文件然后用批處理加ftp腳本,使用get命令逐個下載

  但實際過程中發現,在FTP腳本中使用get有問題,提示參數錯誤,無法使用。

  查看了ftp的幫助ftp -?

FTP,FTP命令,bat文件G:>ftp -?
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件Transfers 
files to and from a computer running an FTP server service
FTP,FTP命令,bat文件
(sometimes called a daemon). Ftp can be used interactively.
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件FTP [-v] [-d] [-i] [-n] [-g] [-s
:filename] [-a] [-w:windowsize] [-A] [host]
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件  -v             Suppresses display of remote server responses
.
FTP,FTP命令,bat文件  -n             Suppresses auto-login upon initial connection.
FTP,FTP命令,bat文件  -i             Turns off interactive prompting during multiple file
FTP,FTP命令,bat文件                 transfers
.
FTP,FTP命令,bat文件  -d             Enables debugging.
FTP,FTP命令,bat文件  -g             Disables filename globbing (see GLOB command).
FTP,FTP命令,bat文件  -s:filename    Specifies a text file containing FTP commands; the
FTP,FTP命令,bat文件                 commands will automatically 
run after FTP starts.
FTP,FTP命令,bat文件  -a             Use any local interface when binding data connection.
FTP,FTP命令,bat文件  -A             login as anonymous.
FTP,FTP命令,bat文件  -w:buffersize  Overrides the default transfer buffer size of 4096.
FTP,FTP命令,bat文件  host           Specifies the host name or IP address of the remote
FTP,FTP命令,bat文件                 host to connect to
.
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件Notes:
FTP,FTP命令,bat文件  - mget and mput commands take y
/n/for yes/no/quit.
FTP,FTP命令,bat文件  - Use Control-C to abort commands.
FTP,FTP命令,bat文件

發現 -i 參數可以去除mget的提示,經過測試,實現了如下腳本(使用了匿名登入,如果非匿名,可以修改登入腳本):

FTP,FTP命令,bat文件echo cd autoruns>ftp.txt
FTP,FTP命令,bat文件
echo mget *>>ftp.txt
FTP,FTP命令,bat文件
echo bye>>ftp.txt
FTP,FTP命令,bat文件ftp -i -A -s
:ftp.txt 10.1.103.10

   不過,這只是下載了目錄中的文件,如果有子目錄,那還需要用dir命令輸出,并轉向輸出到文本,用find來提取目錄,如:

FTP,FTP命令,bat文件echo cd autoruns>ftp.txt
FTP,FTP命令,bat文件
echo dir>>ftp.txt
FTP,FTP命令,bat文件
echo bye>>ftp.txt
FTP,FTP命令,bat文件ftp -A -s
:ftp.txt 10.1.103.10 |find "<DIR>">result.txt
FTP,FTP命令,bat文件
for /"tokens=2,3*" %%i in (result.txt) do echo %%k

  如有子文件夾,那就要深入編寫了。

  經過編寫測試,實現如下腳本,運行環境WINXP SP2,運行通過,未載其它系統上測試過:

1、主要腳本ftpget.bat,更改前4個變量的相關信息,該腳本調用makeTree.bat,請參見2

FTP,FTP命令,bat文件rem FTP服務器地址
FTP,FTP命令,bat文件set host=10.1.103.10
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
rem FTP登入名,如果匿名不用改
FTP,FTP命令,bat文件set user=anonymous
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
rem FTP登入密碼,如果匿名不用改
FTP,FTP命令,bat文件set pass=123456
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
rem 需要下載的FTP目錄,如果下載子目錄以分格
FTP,FTP命令,bat文件set dirname=目錄1子目錄
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
set homedir=%cd%
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
rem 生成FTP目錄結構
FTP,FTP命令,bat文件del tree.txt
FTP,FTP命令,bat文件
start /cmd /c makeTree %dirname% 0
FTP,FTP命令,bat文件del result*.txt
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
for /"delims=/" %%i in (tree.txt) do (
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
rem 獲取dirname的所有文件
FTP,FTP命令,bat文件rem =============================
FTP,FTP命令,bat文件cd %homedir%
FTP,FTP命令,bat文件
md %%i
FTP,FTP命令,bat文件
cd /d %%i
FTP,FTP命令,bat文件
echo %user%>ftp.txt
FTP,FTP命令,bat文件
echo %pass%>>ftp.txt
FTP,FTP命令,bat文件
echo cd %%i>>ftp.txt
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
rem mget *.* 下載所有文件,但不能下載無擴展名的文件;
FTP,FTP命令,bat文件rem 如果使用mget * 可以下載所有文件,但會把子目錄的文件也下載過來
FTP,FTP命令,bat文件echo mget *.*>>ftp.txt
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
echo bye>>ftp.txt
FTP,FTP命令,bat文件ftp -i -A -s
:ftp.txt %host%
FTP,FTP命令,bat文件
del ftp.txt
FTP,FTP命令,bat文件
rem ==============================
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件)
FTP,FTP命令,bat文件cd %homedir%
FTP,FTP命令,bat文件
del tree.txt
FTP,FTP命令,bat文件

2、maketree.bat,生成FTP目錄樹

FTP,FTP命令,bat文件rem 生成FTP目錄結構
FTP,FTP命令,bat文件rem 調用方法 maketree dir1dir2 n (n>=1)
FTP,FTP命令,bat文件rem %1 == dir1dir2
FTP,FTP命令,bat文件rem %2 == n
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件set /a treetime=%2+1
FTP,FTP命令,bat文件echo %1 >>tree.txt
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件
echo %user% >ftp%treetime%.txt
FTP,FTP命令,bat文件
echo %pass% >>ftp%treetime%.txt
FTP,FTP命令,bat文件
echo cd %1 >>ftp%treetime%.txt
FTP,FTP命令,bat文件
echo dir >>ftp%treetime%.txt
FTP,FTP命令,bat文件
echo bye >>ftp%treetime%.txt
FTP,FTP命令,bat文件ftp -A -s
:ftp%treetime%.txt %host% |find "<DIR>">result%treetime%.txt
FTP,FTP命令,bat文件
for /"tokens=2,3*" %%i in (result%treetime%.txt) do (start /cmd /c Maketree.bat %1%%k %treetime%)
FTP,FTP命令,bat文件del result%treetime%.txt
FTP,FTP命令,bat文件
del ftp%treetime%.txt
FTP,FTP命令,bat文件
FTP,FTP命令,bat文件

 

  雖然已經實現,但仍然有小問題,就是mget *.* 不能下載無擴展名的程序;如果使用mget * 可以下載所有文件,但會把子目錄的文件也下載過來。get在FTP腳本中出錯也不知為何。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精河县| 腾冲县| 丰都县| 正安县| 邵东县| 乐都县| 邳州市| 永吉县| 新竹县| 托克托县| 广安市| 祥云县| 湄潭县| 台前县| 丽江市| 文水县| 濮阳市| 米泉市| 平遥县| 广丰县| 黄平县| 阜阳市| 九龙城区| 屏东县| 通化县| 襄城县| 乐安县| 格尔木市| 涞水县| 肥东县| 邵东县| 青州市| 邯郸市| 弥渡县| 乐至县| 宜兴市| 长沙县| 宜川县| 温州市| 桂东县| 封丘县|