VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

VFP中執行FTP命令(轉貼)

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 1 樓

發表發表於: 星期六 三月 27, 2004 3:25 am    文章主題: VFP中執行FTP命令(轉貼) 引言回覆

來源:童心未泯
http://218.75.129.136/nowboard/NowTopic.aspx?forum=1&forumpage=1&topic=179

ftp命令雖然簡單,但功能卻很強大。可惜都是在ftp環境中,對一般用戶來說,讓他們使用ftp命令是不現實的。因此,在vfp中,用編程的方法,運行所需的ftp命令,就很管用了。下面是我用了很久的一段代碼,很實用,其功能是上傳一個文件並利用ftp文件目錄來判斷是否上傳成功。 至於要做其它事情,照著這個方法往下寫就可以了。 


local cFileName,cDirName,cExpression
local strftpUserID ,strftpPassWord ,cUpFtpFileName ,ftpIp
local owsh 

cFileName = fullpath(curdir())+'ftp.txt' && 生成一個包含ftp命令的文件
cDirName = fullpath(curdir())+'dir.txt' && 顯示ftp服務器文件目錄的文件
if file(cDirName)
dele file (cDirName)
endif 

&& strftpUserID 為ftp服務器登錄用戶
cExpression = strftpUserID+chr(13)+chr(10) && 用戶名
STRTOFILE(cExpression, cFileName , .F.) 

&& strftpPassWord 為ftp服務器登錄密碼
cExpression = strftpPassWord+chr(13)+chr(10) && 密碼
STRTOFILE(cExpression, cFileName , .T.) 

&& cUpFtpFileName 為要上傳的文件
cExpression = 'put '+cUpFtpFileName+' '+JUSTFNAME(cUpFtpFileName)+chr(13)+chr(10) && 上傳文件
STRTOFILE(cExpression, cFileName , .T.) 

cExpression = 'mdir '+JUSTFNAME(cUpFtpFileName)+' '+cDirName+chr(13)+chr(10) && 返回服務器上傳的文件目錄
STRTOFILE(cExpression, cFileName , .T.) 

cExpression = 'y'+chr(13)+chr(10)
STRTOFILE(cExpression, cFileName , .T.) 

cExpression = 'bye'+chr(13)+chr(10)
STRTOFILE(cExpression, cFileName , .T.) 


&& ftpIp為ftp服務器IP地址
owsh=createobject("wscript.shell")
if left(os(),10) == 'Windows NT' OR os()='Windows 5.00'
owsh.run("cmd /c ftp -s:"+cFileName +" "+ftpIp,0,.T.) &&0 為運行時窗口類型,隱藏,.T.為程序執行完後才會停止
else
owsh.run("command.com /c ftp -s:"+cFileName +" "+ftpIp,0,.T.) &&0 為運行時窗口類型,隱藏,.T.為程序執行完後才會停止
endif
release owsh 

if file(cDirName)
cExpression = FILETOSTR(cDirName)
if atc(JUSTFNAME(cUpFtpFileName),cExpression) > 0
is_ok = .T.
endif
endif
if is_ok
messagebox(上傳文件完成)
dele file (cDirName)
else
messagebox(上傳文件失敗)
endif 

 

********************
下面介紹ftp的主要命令及使用方法: 

FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操
作系統下使用FTP,都會遇到大量的FTP內部命令。 熟悉並靈活應用FTP的內部
命令,可以大大方便使用者,並收到事半功倍之效。
FTP的命令行格式為: ftp -v -d -i -n -g [主機名] ,其中 

-v 顯示遠程服務器的所有響應信息;
-n 限制ftp的自動登錄,即不使用;
.n etrc文件;
-d 使用調試方式;
-g 取消全局文件名。
ftp使用的內部命令如下(中括號表示可選項):
1.![cmd[args]]:在本地機中執行交互shell,exit回到ftp環境,如:
!ls*.zip.
2.$ macro-ame[args]:執行宏定義macro-name.
3.account[password]:提供登錄遠程系統成功後訪問系統資源所需的補
充口令。
4.append local-file[remote-file]:將本地文件追加到遠程系統主機,
若未指定遠程系統文件名,則使用本地文件名。
5.ascii:使用ascii類型傳輸方式。
6.bell:每個命令執行完畢後計算機響鈴一次。
7.bin:使用二進制文件傳輸方式。
8.bye:退出ftp會話過程。
9.case:在使用mget時,將遠程主機文件名中的大寫轉為小寫字母。
10.cd remote-dir:進入遠程主機目錄。
11.cdup:進入遠程主機目錄的父目錄。
12.chmod mode file-name:將遠程主機文件file-name的存取方式設置為
mode,如: chmod 777 a.out 。
13.close:中斷與遠程服務器的ftp會話(與open對應)。
14.cr:使用asscii方式傳輸文件時,將回車換行轉換為回行。
15.delete remote-file:刪除遠程主機文件。
16.debug[debug-value]:設置調試方式, 顯示發送至遠程主機的每條命
令,如: deb up 3,若設為0,表示取消debug。
17.dir[remote-dir][local-file]:顯示遠程主機目錄,並將結果存入本
地文件local-file。
18.disconnection:同close。
19.form format:將文件傳輸方式設置為format,缺省為file方式。
20.get remote-file[local-file]: 將遠程主機的文件remote-file傳至
本地硬盤的local-file。
21.glob:設置mdelete,mget,mput的文件名擴展,缺省時不擴展文件名,
同命令行的-g參數。
22.hash:每傳輸1024字節,顯示一個hash符號(#)。
23.help[cmd]:顯示ftp內部命令cmd的幫助信息,如:help get。
24.idle[seconds]:將遠程服務器的休眠計時器設為[seconds]秒。
25.image:設置二進制傳輸方式(同binary)。
26.lcd[dir]:將本地工作目錄切換至dir。
27.ls[remote-dir][local-file]:顯示遠程目錄remote-dir, 並存入本
地文件local-file。
28.macdef macro-name:定義一個宏,遇到macdef下的空行時,宏定義結
束。
29.mdelete[remote-file]:刪除遠程主機文件。
30.mdir remote-files local-file:與dir類似,但可指定多個遠程文件,
如: mdir *.o.*.zipoutfile 。
31.mget remote-files:傳輸多個遠程文件。
32.mkdir dir-name:在遠程主機中建一目錄。
33.mls remote-file local-file:同nlist,但可指定多個文件名。
34.mode[modename]:將文件傳輸方式設置為modename, 缺省為stream方
式。
35.modtime file-name:顯示遠程主機文件的最後修改時間。
36.mput local-file:將多個文件傳輸至遠程主機。
37.newer file-name: 如果遠程機中file-name的修改時間比本地硬盤同
名文件的時間更近,則重傳該文件。
38.nlist[remote-dir][local-file]:顯示遠程主機目錄的文件清單,並
存入本地硬盤的local-file。
39.nmap[inpattern outpattern]:設置文件名映射機制, 使得文件傳輸
時,文件中的某些字符相互轉換,如:nmap $1.$2.$3[$1,$2].[$2,$3],則
傳輸文件a1.a2.a3時,文件名變為a1,a2。該命令特別適用於遠程主機為非UNIX
機的情況。
40.ntrans[inchars[outchars]]:設置文件名字符的翻譯機制,如ntrans
1R,則文件名LLL將變為RRR。
41.open host[port]:建立指定ftp服務器連接,可指定連接端口。
42.passive:進入被動傳輸方式。
43.prompt:設置多個文件傳輸時的交互提示。
44.proxy ftp-cmd:在次要控制連接中,執行一條ftp命令, 該命令允許
連接兩個ftp服務器,以在兩個服務器間傳輸文件。第一條ftp命令必須為open,
以首先建立兩個服務器間的連接。
45.put local-file[remote-file]:將本地文件local-file傳送至遠程主
機。
46.pwd:顯示遠程主機的當前工作目錄。
47.quit:同bye,退出ftp會話。
48.quote arg1,arg2...:將參數逐字發至遠程ftp服務器,如:
quote syst.
49.recv remote-file[local-file]:同get。
50.reget remote-file[local-file]:類似於get,但若local-file存在,
則從上次傳輸中斷處續傳。
51.rhelp[cmd-name]:請求獲得遠程主機的幫助。
52.rstatus[file-name]:若未指定文件名,則顯示遠程主機的狀態,否
則顯示文件狀態。
53.rename[from][to]:更改遠程主機文件名。
54.reset:清除回答隊列。
55.restart marker:從指定的標誌marker處,重新開始get或put,如:
restart 130。
56.rmdir dir-name:刪除遠程主機目錄。
57.runique:設置文件名唯一性存儲,若文件存在,則在原文件後加後綴
..1,.2等。
58.send local-file[remote-file]:同put。
59.sendport:設置PORT命令的使用。
60.site arg1,arg2...:將參數作為SITE命令逐字發送至遠程ftp主機。
61.size file-name:顯示遠程主機文件大小,如:site idle 7200。
62.status:顯示當前ftp狀態。
63.struct[struct-name]:將文件傳輸結構設置為struct-name, 缺省時
使用stream結構。
64.sunique:將遠程主機文件名存儲設置為唯一(與runique對應)。
65.system:顯示遠程主機的操作系統類型。
66.tenex:將文件傳輸類型設置為TENEX機的所需的類型。
67.tick:設置傳輸時的字節計數器。
68.trace:設置包跟蹤。
69.type[type-name]:設置文件傳輸類型為type-name,缺省為ascii,如:
type binary,設置二進制傳輸方式。
70.umask[newmask]:將遠程服務器的缺省umask設置為newmask,如:
umask 3。
71.user user-name[password][account]:向遠程主機表明自己的身份,
需要口令時,必須輸入口令,如:user anonymous my@email。
72.verbose:同命令行的-v參數,即設置詳盡報告方式,ftp服務器的所有
響應都將顯示給用戶,缺省為on.
73.?[cmd]:同help.

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
goto-dream



註冊時間: 2004-05-11
文章: 909


第 2 樓

發表發表於: 星期一 五月 24, 2004 8:59 am    文章主題: 引言回覆

補充
FTP指令說明的網站:

FTP指令 http://larc.ee.nthu.edu.tw/~sylin/ftp-help.htm
網路農夫 http://www.europa.idv.tw/Fman/Lman1/ref/ftp.html
文字傳輸說明 http://www.tyjhs.tyc.edu.tw/txtftp.htm

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢


goto-dream 在 星期一 五月 24, 2004 9:14 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
goto-dream



註冊時間: 2004-05-11
文章: 909


第 3 樓

發表發表於: 星期一 五月 24, 2004 9:12 am    文章主題: 引言回覆

來自Windows說明.還是使用M$的比較快
引言回覆:
Ftp將檔案傳送到執行「檔案傳輸通訊協定 (FTP)」伺服器服務 (如,網際網路資訊服務) 的電腦,以及從這樣的電腦傳送檔案。處理 ASCII 文字檔案時,可以互動式或批次模式使用 Ftp

語法
ftp [-v] [-d] [-i] [-n] [-g] [-s:FileName] [-a] [-w:WindowSize] [-A] [Host]

參數
-v
抑制 FTP 伺服器回應的顯示。
-d
啟用偵錯,並顯示 FTP 用戶端與 FTP 伺服器之間所傳遞的所有命令。
-i
在傳送多個檔案期間停用互動提示。
-n
在建立了初始連線時抑制自動登入的能力。
-g
停用檔案名稱通用慣例。Glob 允許在本機檔案及路徑名稱中使用星號 (*) 及問號 (?) 作為萬用字元。若需相關資訊,請參閱 [相關主題]。
-s:FileName
指定包含 ftp 命令的文字檔案。這些命令會在 ftp 啟動後自動執行。此參數不允許有任何空格。請使用此參數來取代重新導向 (<)。
-a
指定在連結 FTP 資料連線時可使用的任一本機介面。
-w:WindowSize
指定傳輸緩衝區的大小。預設視窗大小是 4096 個位元組。
-A
匿名登入 FTP 伺服器。
Host
指定所要連接之 FTP 伺服器的電腦名稱、IP 位址或 IPv6 位址。主機名稱或位址 (若有指定) 必須是行中的最後一個參數。
/?
在命令提示字元上顯示說明。
備註
您必須在 ftp 參數的開頭使用連字符 (-),而不是斜線 (/)。
Ftp 命令列參數區分大小寫。
唯有將網際網路通訊協定 (TCP/IP) 通訊協定,在 [網路連線] 中安裝為網路介面卡內容的元件,才能使用此命令。
Ftp 可以互動使用。啟動 ftp 後,它會建立一個您可以使用 ftp 命令的子環境。您可以輸入 quit 命令來返回到命令提示字元。當 ftp > 命令提示字元出現時,即表示正在執行 ftp 子環境。
ftp 子命令的相關資訊,請參閱 [相關主題]。
若已安裝 IPv6 通訊協定,Ftp 則支援 IPv6 的使用。若需相關資訊,請參閱 [相關主題]。
範例
若要登入名為 ftp.example.microsoft.comFTP 伺服器,請輸入:

ftp ftp.example.microsoft.com

若要匿名登入名為 ftp.example.microsoft.comFTP 伺服器,請輸入:

ftp -A ftp.example.microsoft.com

若要登入名為 ftp.example.microsoft.comFTP 伺服器,並執行名為 Resynch.txt 檔案中所包含的 ftp 命令,請輸入:

ftp -s:resynch.txt ftp.example.microsoft.com

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作