使用FTP下載目錄,即FTP命令批量自動下載的bat檔案 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

FTP不支援目錄的下載,不過FTP命令提供了mget命令,允許多檔案下載,但每下載一個檔案都需要確認,不能自動完成。

本文主要介紹使用批處理,結合FTP的 ... 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具使用FTP下載目錄,即FTP命令批量自動下載的bat檔案2018.07.10前端開發使用FTP下載目錄,即FTP命令批量自動下載的bat檔案HOME前端開發使用FTP下載目錄,即FTP命令批量自動下載的bat檔案AdvertisementFTP不支援目錄的下載,不過FTP命令提供了mget命令,允許多檔案下載,但每下載一個檔案都需要確認,不能自動完成。

本文主要介紹使用批處理,結合FTP的相關命令來實現批量檔案的下載,以便達到目錄下載的目的。

  大致想法如下:ftp -s:filename hosts >result.txt 執行指令碼,並將結果定向輸出到result.txt指令碼內容,如cd mydirlsbye可以將mydir命令列出然後使用批處理分析result.txt從150 Opening ASCII mode data connection for file list.的下一行開始算,直到226 Transfer complete都是要下載的內容然後用批處理加ftp指令碼,使用get命令逐個下載  但實際過程中發現,在FTP指令碼中使用get有問題,提示引數錯誤,無法使用。

  檢視了ftp的幫助ftp-?G:>ftp -?Transfers files to and from a computer running an FTP server service(sometimes called a daemon). Ftp can be used interactively.FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host]  -v             Suppresses display of remote server responses.  -n             Suppresses auto-login upon initial connection.  -i             Turns off interactive prompting during multiple file                 transfers.  -d             Enables debugging.  -g             Disables filename globbing (see GLOB command).  -s:filename    Specifies a text file containing FTP commands; the                 commands will automatically run after FTP starts.  -a             Use any local interface when binding data connection.  -A             login as anonymous.  -w:buffersize  Overrides the default transfer buffer size of 4096.  host           Specifies the host name or IP address of the remote                 host to connect to.Notes:  – mget and mput commands take y/n/q for yes/no/quit.  – Use Control-C to abort commands.發現-i引數可以去除mget的提示,經過測試,實現瞭如下指令碼(使用了匿名登入,如果非匿名,可以修改登入指令碼):echo cd autoruns>ftp.txtecho mget *>>ftp.txtecho bye>>ftp.txtftp -i -A -s:ftp.txt 10.1.103.10   不過,這只是下載了目錄中的檔案,如果有子目錄,那還需要用dir命令輸出,並轉向輸出到文字,用find來提取目錄,如:echo cd autoruns>ftp.txtecho dir>>ftp.txtecho bye>>ftp.txtftp -A -s:ftp.txt 10.1.103.10 |find “

”>result.txtfor /f “tokens=2,3*” %%i in (result.txt) do echo %%k  如有子資料夾,那就要深入編寫了。

  經過編寫測試,實現如下指令碼,執行環境WINXPSP2,執行通過,未載其它系統上測試過:1、主要指令碼ftpget.bat,更改前4個變數的相關資訊,該指令碼呼叫makeTree.bat,請參見2rem FTP伺服器地址set host=10.1.103.10rem FTP登入名,如果匿名不用改set user=anonymousrem FTP登入密碼,如果匿名不用改set pass=123456rem 需要下載的FTP目錄,如果下載子目錄以分格set dirname=目錄1子目錄set homedir=%cd%rem 生成FTP目錄結構del tree.txtstart /w cmd /c makeTree %dirname% 0del result*.txtfor /f “delims=/” %%i in (tree.txt) do (rem 獲取dirname的所有檔案rem =============================cd %homedir%md %%icd /d %%iecho %user%>ftp.txtecho %pass%>>ftp.txtecho cd %%i>>ftp.txtrem mget *.* 下載所有檔案,但不能下載無副檔名的檔案;rem 如果使用mget * 可以下載所有檔案,但會把子目錄的檔案也下載過來echo mget *.*>>ftp.txtecho bye>>ftp.txtftp -i -A -s:ftp.txt %host%del ftp.txtrem ==============================)cd %homedir%del tree.txt2、maketree.bat,生成FTP目錄樹rem 生成FTP目錄結構rem 呼叫方法 maketree dir1dir2 n (n>=1)rem %1 == dir1dir2rem %2 == nset /a treetime=%21echo %1 >>tree.txtecho %user% >ftp%treetime%.txtecho %pass% >>ftp%treetime%.txtecho cd %1 >>ftp%treetime%.txtecho dir >>ftp%treetime%.txtecho bye >>ftp%treetime%.txtftp -A -s:ftp%treetime%.txt %host% |find “”>result%treetime%.txtfor /f “tokens=2,3*” %%i in (result%treetime%.txt) do (start /w cmd /c Maketree.bat %1%%k %treetime%)del result%treetime%.txtdel ftp%treetime%.txt   雖然已經實現,但仍然有小問題,就是mget*.*不能下載無副檔名的程式;如果使用mget*可以下載所有檔案,但會把子目錄的檔案也下載過來。

get在FTP指令碼中出錯也不知為何。

相關資訊參考: 使用FTP批處理指令碼,Ftp子命令目錄1.您可能感興趣的文章:您可能感興趣的文章:實現自動上傳檔案到ftp伺服器的BAT指令碼分享批處理bat下載FTP伺服器上某個目錄下的檔案批處理bat下載FTP伺服器上指定天數之前的檔案備份檔案並上傳至FTP伺服器的bat程式碼linux和windows下的自動ftp指令碼(shellbat)Bat指令碼處理ftp超強案例分析windows下定時利用bat指令碼實現ftp上傳下載Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08Spark實戰搭建我們的Spark分佈式架構2019.12.08【機器學習】深度學習開發環境搭建2019.12.08AdvertisementAdvertisement


請為這篇文章評分?