Board logo

標題: FTP 命令集 [打印本頁]

作者: wen    時間: 2006-5-27 03:28     標題: FTP 命令集

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.sh#ll")
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指令。
FTP的指令行格式為: ftp -v -d -i -n -g [主機名] ,其中 

-v 顯示遠端伺服器的所有回應資訊;
-n 限制FTP的自動登錄,即不使用; .n etrc文件;
-d 使用調試方式;
-g 取消全局檔案名。

FTP使用的內部指令如下(中括弧表示可選項):
1.![cmd[args]]:在本地機中執行交互sh#ll,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.

作者: arthur75    時間: 2006-8-21 05:04

好用的指令集,收下了

謝謝






歡迎光臨 x2bbs (http://wen-jos.idv.tw/) Powered by Discuz! 7.0.0