批處理命令ftp
『壹』 批處理怎樣在WINDOWS 資源管理器中打開ftp
需要做一個批處理,一個ftp腳本,放到一個目錄下,雙擊startftp.bat使用。1、第一個保存為startftp.batftp -s:ftp.ftp2、第二個保存為ftp.ftp,具體代碼根據實際情況而定,第一行open後面是ftp地址,第二行user後面是用戶名,第三行填密碼,之後就是需要使用的ftp命令了。open 10.0.0.1user usernamepassword get * bye
『貳』 怎樣使用批處理來操作FTP命令
將文件傳送到運行FTP伺服器服務(經常稱為後台程序)的計算機以及將文件從該計算機
傳出。可以交互使用Ftp。
FTP[-v][-d][-i][-n][-g][-s:filename][-a][-A][-x:sendbuffer][-r:recvbuffer][-b:asyncbuffers][-w:windowsize][host]
-v禁止顯示遠程伺服器響應。
-n禁止在初始連接時自動登錄。
-i關閉多文件傳輸過程中的
互動式提示。
-d啟用調試。
-g禁用文件名通配(請參閱GLOB命令)。
-s:filename指定包含FTP命令的文本文件;命令
在FTP啟動後自動運行。
-a在綁字數據連接時使用所有本地介面。
-A匿名登錄。
-x:sendsockbuf覆蓋默認的SO_SNDBUF大小8192。
-r:recvsockbuf覆蓋默認的SO_RCVBUF大小8192。
-b:asynccount覆蓋默認的非同步計數3
-w:windowsize覆蓋默認的傳輸緩沖區大小65535。
host指定主機名稱或要連接到的遠程主機
的IP地址。
注意:
-mget和mput命令將y/n/q視為yes/no/quit。
-使用Ctrl-C中止命令。
『叄』 批處理命令從ftp上下載子目錄中文件
先建一個ftp命令文件:如
get.ftp
open
192.168.0.2
FTPUSERNAME
#賬號
FTPPASSWORD
#密碼
get
/SharedFile/Log
/1.txt
bye
然後再建批處理文件
ftp
-s:d:\test\get.ftp
『肆』 請問自動上傳特定目錄到FTP伺服器的BAT批處理怎樣寫
您可以使用cmd環境的rar,對所有B00n文件夾下的C003進行整體打包,然後上傳各個打包的rar文件,我假定您AAA目錄下所有B大頭的目錄都有C003子目錄,並且都要備份上傳。這個rar工具可以在winrar的安裝目錄下找到,拷貝到AAA目錄下就行了。
按您的描述,增量備份用批處理可能會比較麻煩,我下面幫您寫的是全量備份的,不過rar做的壓縮包會保持文件的完整目錄結構。
把下面的命令存為批處理文件:my_ftp_put_C003.bat,這個bat文件要放在AAA目錄下。
@echo off
@set d=E:\AAA
@cd /d %d%
rem 下面三行是ftp的IP、用戶名、密碼,請自行替換
@set ftpip=127.0.0.1
@set ftpusr=username
@set ftppwd=password
@for /f "delims=" %%i in ('dir B* /ad /b') do @rar a AAA_%%i_C003.rar %%~fi\C003
@echo open %ftpip%>%d%\tmp.ftp
@echo %ftpusr%>>%d%\tmp.ftp
@echo %ftppwd%>>%d%\tmp.ftp
@for /f "delims=" %%i in ('dir AAA_B*.rar /b') do @echo put %%i >>%d%\tmp.ftp
@echo quit >>%d%\tmp.ftp
@ping -n 2 127.0.0.1 >nul
@ftp -s:%d%\tmp.ftp
@del %d%\tmp.ftp
上面有幾行,在注釋後面是ftp的ip地址、用戶名、密碼,您要改成您自己的。
以上批處理我已經在Win10+ftp的環境下測試過了,希望對您有幫助。
『伍』 用批處理上傳文件到ftp目錄下的實現方法
為了快速將項目中開發的補丁程序通過ftp快速上傳到linux下,感覺每次用flashFxp等工具麻煩),寫了個簡單的批處理,與大家分享一下。
將以下代碼保存為.bat格式的文件,每次將要上傳的補丁保存在規定的本地目錄中,只要雙擊執行此文件就能上傳到你的指定目錄上。
說明:
192.168.1.1
ftp
ip
地址
21
埠
username
用戶名
password
密碼
temp.txt
保存ftp信息的臨時文件,上傳後刪除
C:\Documents
and
Settings\user\桌面\patch\upload_dir\1.zip
上傳upload_dir目錄下的zip文件
test/temp%date%.rar
上傳到用戶目錄下並且以「temp+當前日期」
對上傳文件重命名
最後是刪除本地文件
復制代碼
代碼如下:
@echo
off
echo
open
192.168.1.1
21
>>
temp.txt
echo
user
username
password>>
temp.txt
echo
bin
>>
temp.txt
echo
put
"C:\Documents
and
Settings\user\桌面\patch\upload_dir\1.rar"
"test/temp%date%.rar"
>>
temp.txt
echo
bye
>>
temp.txt
ftp
-n
-s:"temp.txt"
del
/q
C:\Documents
and
Settings\user\桌面\patch\upload_dir\1.rar
del
/q
temp.txt
pause
以上內容是小編給大家介紹的用批處理上傳文件到ftp目錄下的實現方法,希望對大家有所幫助!
『陸』 批處理來完成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來獲取這個字元。
最後這個腳本東湊西湊,界面如下:
『柒』 請教高手,用批處理命令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超強案例分析
前言 公司有幾百台windows伺服器 每次程序更新 如果是一台台拷數據 只怕安排十個人 一天都不一定做得完 所以就必須研究個全自動更新方案來 於是就想到了FTP 做個主FTP站 在幾百台客戶機上啟動BAT腳本 每 秒檢測一次 如果主站有更新程序 就自動下載更新 幾分鍾內 上 台windows伺服器 都可以全自動更新程序完畢 相當實用 現把當初研究BAT的腳本思路貼出來 希望對大批量運維人員一個方向 當然 批量更新伺服器 每個公司有它自己的解決辦法 這個BAT的方式不是最優的 可以用shell 可以用perl 也可以用python等腳本解決 一 FTP命令說明 在windows系統中因為FTP是一個程序 如果在bat腳本中直接調用FTP的命令 在執行時總會彈出命令行窗口 循環在>FTP游標這 所以要換種方式 利用 S:filename 更多的命令請輸入 h查看 FTP登錄成功後 需要下載遠程單個文件時 使用get命令 如果下載多個文件時 用mget 它支持通配符 在使用mget時 需要對每一個文件都進行選擇Y/N 如果想不交互的下載全部的文件 可以輸入一次prompt命令關閉交互方式 Mput和mget命令要注意兩個問題 Ⅰ 不能對目標文件指定命字 在命令行上所有的文件都視做源文件 Ⅱ mput mget兩個命令不能對目錄進行上傳與下載 只能對文件 Ⅲ Prompt 每次執行一個這個命令 就在on off之間循環 ftp腳本開始時 prompt默認為on 所以一般在上傳 下載文件時 執行一次prompt 把互動式的on關掉 變為off 文件的傳輸方式 Binary 二進制傳輸 Ascii ascII傳輸 在FTP文件傳輸過程中 ASCII傳輸HTML和文本編寫的文件 而二進制碼傳輸可以傳送文本和非文本(執行文件 壓縮文件 圖片等) 具有通用性 二進制碼傳輸速度比ASCII傳輸要快 所以在建立bat腳本時 一般輸入bin命令 啟用二進制傳輸 如果用ASCII模式傳輸非文本文件 可能會顯示一堆亂碼 如果是上傳一些CGI腳本 有可能將無法運行這類腳本 而在瀏覽器上看到server error的錯誤 Ascii和binary模式的區別是回車換行的處理 binary模式不對數據進行任何處理 asci模式將回車換行轉換為本機的回車字元 比如Unix下是 Windows下是 Mac下是 unix系統下行結束符是一個位元組 即十六進制的 A 而ms的系統是兩個位元組 即十六進制的 D A 所以當你用ascii方式從unix的ftp server下載文件時(不管是二進制或者文本文件 redhat的 vsftp默認是binary ascii默認關閉) 每檢測到一個位元組是 A 就會自動插入一個 D 所以如果你的文件是二進制文件比如可執行文件 壓縮包什麼的 就肯定不能用了 如果你的文件就是unix下的文本文件 你用 ascii模式是正確的 要是誤用了binary模式 你在windows上看這個文件是沒有換行的 裡面是一個個的黑方塊 在用FTP客戶端傳輸文件時 因為這些軟體都做得比較智能化 它可以根據後綴 自動啟用傳輸模式 所以不用擔心出問題 二 實例求證 環境說明 上有一FTP伺服器端(windows版) FTP用戶名為lgh 密碼為 該用戶的根目錄為D lgh 裡面文件見下圖 sql rar是sql bat的壓縮文件 大家注意看圖 我等下會在後面的實例中引用這個文件 把mget get prompt bin ascii等ftp命令詮釋得一清二白實例一 直接BAT調用FTP命令 ftpbat bat內容 (***大家建立bat文件不要命名為ftp bat 執行時會有問題***)
復制代碼 代碼如下:
ftp open lgh get sql rar bye
從圖上的結果看 bat腳本直接調用xp的FTP命令是不行的 執行時H:>ftp會一直死循環 我這里的XP系統是SP 的 其它版本的 我沒有作測試 如果有不同 歡迎大家留言告之 實例二 用put get上傳 下載單個文件 把XP機器上H:js目錄下文件flower zip上傳到FTP伺服器 把FTP伺服器中的sql rar文件下載到XP機器上的H:JS目錄 ftp get put bat內容如下
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo get sql rar >> %ftpfilename% echo put flower zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
我們來看看結果 見下面兩張圖 從XP系統上看 H盤的JS目錄 多了個sql rar FTP伺服器上的根目錄多了個flower zip 這說明 剛才的腳本完成正常的執行了 達到了預期的目的
實例三 用put get上傳 下載多個文件 在XP機器上把flower zip復制一次 改名為flower zip 在XP機器上把把第二次實例下載的sql rar文件刪除 以免影響到本次操作 在FTP伺服器上把第二次實例上傳的flower zip文件刪除 以免影響到本次操作 把XP機器上H:js目錄下文件flower zip 和flower zip上傳到FTP伺服器 ftp get put many bat內容如下
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
到FTP伺服器上查看根目錄 看flower zip與flower zip是否已成功上傳 從圖上看 只成功上傳了flower zip文件
剛那個ftp get put many bat腳本里echo put flower zip flower zip>> %ftpfilename% flower zip是傳輸的最後一個文件 是不是用put時 意味著bat在處理上傳時 只認最後一個文件呢 我們再多加個文件flower zip 來驗證
在XP機器上把flower zip復制一次 改名為flower zip在FTP伺服器上把第二次實例上傳的flower zip文件刪除 以免影響到本次操作
ftp get put many bat內容修改如下
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower zip flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
結果 還是只成功上傳了flower zip 因bat雙擊時 執行過程會一閃而過 我們看不到執行過程 到命令行去執行下 看到底出了什麼問題
命令行 執行ftp get put many bat腳本 從執行情況看 flower zip三個文件都是put的 但在傳輸時 卻只傳了flower zip 真不解 有知道的朋友嗎?給點方向
再換個方式 用通配符* 試試 ftp get put many bat內容修改如下
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower* zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
在FTP伺服器上把上傳的flower文件全部刪除 以免影響到本次操作執行ftp get put many bat 結果只有flower zip文件上傳成功了 呵 flower zip文件 怎麼都不能上傳 ???
其實用put傳輸多個文件 完全可用重復的方式取代 比如 ftp get put many bat內容修改如下
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower zip >> %ftpfilename% echo put flower zip >> %ftpfilename% echo put flower zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
實例四 用mput mget上傳 下載多個文件 在FTP伺服器上刪除有關flower的文件ftp mget mput many bat內容如下:
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo mput flower zip flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
雙擊ftp mget mput many bat後 發現系統彈出一窗口後 就卡住了 停止不前
原因是用了mput命令 但沒有用Prompt關閉交互
ftp mget mput many bat內容修改如下:
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo Prompt >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo mput flower zip flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
再次執行ftp mget mput many bat 結果見下圖
用通配符*試試在FTP伺服器上刪除有關flower的文件ftp mget mput many bat內容修改如下:
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo Prompt >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo mput flower* zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
照樣成功上傳有關flower* zip文件 因為結果與上一步是一樣的 所以就不抓圖了 實例五 用ascii在windows系統間傳輸非文本文件 把XP電腦上的rmb jpg通過ascii傳到FTP伺服器的根目錄
ftp get ascii bat內容修改如下:
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo ascii >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put rmb jpg>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
執行ftp get ascii bat後 發現rmb jpg可以正常上傳 並且可以正常打開 那 這個現象與前面所以的ascii不能傳輸非文本東西有出入 這是怎麼回會事呢 這是因為 FTP伺服器是WINDOWS系統 XP電腦上的bat腳本也是在windows系統上運行的 所以bat在windows系統里用FTP傳輸文件 不管是用ascii 還是用binary 都是可以的 接下來我們再做一個實驗 FTP伺服器選centos 再測下ascii傳輸非文本文件問題 實例六 用ascii在windows系統與linux系統間傳輸非文本文件 在RHEL 位系統上建立一vsftpd伺服器 上面說過redhat默認啟用二進制傳輸 關閉了ascii碼傳輸 所以我們還要修改一下vsftpd的配置文件 修改/etc/vsftpd/nf文件 允許客戶端進行ascii傳輸 並重啟vsftpd
把rmb jpg放到FTP伺服器 大家注意下H:js目錄下只有ftp getascii bat文件
ftp getascii bat文件內容修改如下
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo ftp >> %ftpfilename% echo redhat >> %ftpfilename% echo asc >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo get rmb jpg >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
執行ftp getascii bat 看結果 rmb jpg文件有下載到XP電腦里 雙擊這個文件 發現圖像亂碼 文件被破壞了 都是ascii碼傳輸惹的禍換bin傳輸 測試一下在XP電腦上刪除rmb jpg文件 再雙擊ftp getascii bat文件 去從LINUX的FTP伺服器下載一個rmb jpg文件
修改ftp getascii bat 把ascii改給二進制傳輸
復制代碼 代碼如下:
@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo ftp >> %ftpfilename% echo redhat >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo get rmb jpg >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%
結果 文件正常下載 圖像也顯示正常 lishixin/Article/program/qrs/201401/30223
『玖』 想做一個批處理 將指定文件用FTP上傳
時間晚了好久,不知道到還有用沒,希望有用的可以拿來參考
目的監控路徑下面文件,上傳到指定FTP。上傳完畢後文件備份。
方法個人運用兩個bat第一個監控,第二個FTP上傳
1.監控。放到你要監控的文件夾路徑下面建立start.bat 下面是我放的內容。
@echo off
:memu
for /f "delims=" %%a in ('dir /a-d/b *.zip') do (
if not [%%a]==[] (
echo %time%發現:%%a
)
)
start "" Q:BCPbackupftpceshiftpuploud.bat
ping 127.0.1 -n 60 >nul
goto memu
在段中,你要監控的文件類型就是*.zip。可以改成你需要的比如*.jpg等
刪除臨時文件,退出
然後1在監控,有文件後啟動FTP上傳完成後退出
這里我沒有找到決絕辦法的是FTP上傳完的文件如何改名。有知道的大神告訴一下別太難