如何將某個目錄底下的所有檔案複製到另外一個目錄裡 |
尚未結案
|
nonokoko
一般會員 發表:10 回覆:10 積分:4 註冊:2003-11-03 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
nonokoko
一般會員 發表:10 回覆:10 積分:4 註冊:2003-11-03 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
nonokoko
一般會員 發表:10 回覆:10 積分:4 註冊:2003-11-03 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
報歉 沒說的很清楚
我是說使用 dos的xcopy指令 引用也行
其他參數 Microsoft Windows 2000 [版本 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
複製檔案和樹狀目錄。 XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\n
[/EXCLUDE:file1[ file2][ file3]...] source 指定要複製的檔案。
destination 指定位置或者/以及新檔案的名稱。
/A 只複製設定成保存屬性的檔案,不要改變屬性的設定。
/M 只複製設定成保存屬性的檔案,並清除保存屬性。
/D:m-d-y 複製在指定日期當天或之後發生變更的檔案。如果沒有給日期,
只複製那些來源檔案日期比目的檔案日期為新的檔案。
/EXCLUDE:file1[ file2][ file3]...
指定檔案清單字串。如果有字串對應到要進行複製的檔案絕對
路徑的任何部分,這個檔案會被排除複製。例如,指定字串
\obj\ 或 .obj 的話,會排除所有在 obj 目錄下副檔名是
.obj 的檔案複製。
/P 在建立每個目的檔案時顯示提示。
/S 複製每個目錄及其包含的子目錄,不複製空目錄。
/E 複製每個目錄及其包含的子目錄,也複製空目錄。/S 與 /E
相同,能夠用來修改 /T。
/V 驗證每個新檔案。
/W 在複製之前提示您按鍵繼續。
/C 如果錯誤發生時也繼續複製。
/I 如果目的不存在且複製一個以上的檔案的話,就假設指定的
目的一定是目錄。
/Q 在複製時不要顯示檔名。
/F 在複製時顯示來源及目的檔案的全部檔名。
/L 顯示要複製的檔案。
/H 時複製隱藏檔和系統檔。
/R 覆蓋唯讀檔案。
/T 建立目錄結構,但不複製其中的檔案。不包括空目錄及子目錄。
/T /E 會包括空目錄及子目錄。
/U 只複製已經存在目的位置的檔案。
/K 複製檔案屬性。通常 Xcopy 會重設唯讀的屬性。
/N 用所產生的短檔名來進行複製。
/O 複製檔案所有權及 ACL 資訊。
/X 複製檔案審查設定 (包含 /O)。
/Y 不要提示您確認是否要覆蓋一個已經存在的檔案。
/-Y 示您確認是否要覆蓋一個已經存在的檔案。
/Z 在可重新開始的模式中複製網路檔案。 參數 /Y 可以在 COPYCMD 環境變數中預先設定。但可以在指令行中用 /-Y 參數
來覆蓋原有設定。 ================================================================
參考一下
【問題】ShellExecute和WinExec
http://delphi.ktop.com.tw/topic.php?topic_id=27250
http://delphi.ktop.com.tw/topic.php?topic_id=39712 假設bat檔的內容如下
md c:\1234
//新增目錄防止無此目錄
xcopy /y/a/e/c/i/h/f/r C:\995\*.* c:\1234
// 指令參數 路徑 目地
改一下 人性化 可改異動 發表人 - ab 於 2003/11/23 03:55:35
|
nonokoko
一般會員 發表:10 回覆:10 積分:4 註冊:2003-11-03 發送簡訊給我 |
引言: 報歉 沒說的很清楚 我是說使用 dos的xcopy指令 引用也行 其他參數 Microsoft Windows 2000 [版本 5.00.2195] (C) Copyright 1985-2000 Microsoft Corp. 複製檔案和樹狀目錄。 XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\n [/EXCLUDE:file1[ file2][ file3]...] source 指定要複製的檔案。 destination 指定位置或者/以及新檔案的名稱。 /A 只複製設定成保存屬性的檔案,不要改變屬性的設定。 /M 只複製設定成保存屬性的檔案,並清除保存屬性。 /D:m-d-y 複製在指定日期當天或之後發生變更的檔案。如果沒有給日期, 只複製那些來源檔案日期比目的檔案日期為新的檔案。 /EXCLUDE:file1[ file2][ file3]... 指定檔案清單字串。如果有字串對應到要進行複製的檔案絕對 路徑的任何部分,這個檔案會被排除複製。例如,指定字串 \obj\ 或 .obj 的話,會排除所有在 obj 目錄下副檔名是 .obj 的檔案複製。 /P 在建立每個目的檔案時顯示提示。 /S 複製每個目錄及其包含的子目錄,不複製空目錄。 /E 複製每個目錄及其包含的子目錄,也複製空目錄。/S 與 /E 相同,能夠用來修改 /T。 /V 驗證每個新檔案。 /W 在複製之前提示您按鍵繼續。 /C 如果錯誤發生時也繼續複製。 /I 如果目的不存在且複製一個以上的檔案的話,就假設指定的 目的一定是目錄。 /Q 在複製時不要顯示檔名。 /F 在複製時顯示來源及目的檔案的全部檔名。 /L 顯示要複製的檔案。 /H 時複製隱藏檔和系統檔。 /R 覆蓋唯讀檔案。 /T 建立目錄結構,但不複製其中的檔案。不包括空目錄及子目錄。 /T /E 會包括空目錄及子目錄。 /U 只複製已經存在目的位置的檔案。 /K 複製檔案屬性。通常 Xcopy 會重設唯讀的屬性。 /N 用所產生的短檔名來進行複製。 /O 複製檔案所有權及 ACL 資訊。 /X 複製檔案審查設定 (包含 /O)。 /Y 不要提示您確認是否要覆蓋一個已經存在的檔案。 /-Y 示您確認是否要覆蓋一個已經存在的檔案。 /Z 在可重新開始的模式中複製網路檔案。 參數 /Y 可以在 COPYCMD 環境變數中預先設定。但可以在指令行中用 /-Y 參數 來覆蓋原有設定。 ================================================================ 參考一下 【問題】ShellExecute和WinExec http://delphi.ktop.com.tw/topic.php?topic_id=27250 http://delphi.ktop.com.tw/topic.php?topic_id=39712 假設bat檔的內容如下 md c:\1234 //新增目錄防止無此目錄 xcopy /y/a/e/c/i/h/f/r C:\995\*.* c:\1234 // 指令參數 路徑 目地 改一下 人性化 可改異動 發表人 - ab 於 2003/11/23 03:55:35謝謝你ㄛ~~不過我的來源目錄是個變數,所以不能用bat檔!! |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
nonokoko
一般會員 發表:10 回覆:10 積分:4 註冊:2003-11-03 發送簡訊給我 |
引言:我試出來囉~~那我想請教一下,如果我想知道檔案是否傳送成功或失敗,總個傳了幾個檔案或目錄,該怎麼做呢??因為我是個新手,很多都不懂,一直問,真的非常感謝您!!引言: 可是我出現了這樣子錯誤訊息耶! [Error] Unit1.pas(6): Identifier redeclared: 'SysUtils' [Error] Unit1.pas(43): Undeclared identifier: 'CopyDir'1.檢查 uses 裏 SysUtils 是不是宣告了兩次, 造成重覆? 2.CopyDir 改成 _CopyDir 試試. --- Everything I say is a lie. |
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
那你就要跑迴圈判斷了
真的 有這樣的必要嗎 請先看bcb的相關資料
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40899
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40905
其他的部份 KTOP的 包大人 有許多解說 你自己找找 另一方式 也可以引用rar或zip 來協助 來源目錄 大小 數量
不過看你的設計理念 apI是有此方式
如要如此 dos ocmmand就比較不適合了 太多要考慮 發表人 - ab 於 2003/11/24 01:20:08
|
nonokoko
一般會員 發表:10 回覆:10 積分:4 註冊:2003-11-03 發送簡訊給我 |
引言: 那你就要跑迴圈判斷了 真的 有這樣的必要嗎 請先看bcb的相關資料 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40899 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40905 其他的部份 KTOP的 包大人 有許多解說 你自己找找 另一方式 也可以引用rar或zip 來協助 來源目錄 大小 數量 不過看你的設計理念 apI是有此方式 如要如此 dos ocmmand就比較不適合了 太多要考慮 發表人 - ab 於 2003/11/24 01:20:08其他的部份 KTOP的 包大人 有許多解說 你自己找找→這是那裡啊?? 我是用api的設計理念! 我的流程是建立兩個網路磁碟機,將pc1的檔案傳送到pc2,然後要我只是想要知道檔案是否有完全傳送成功!^_____^ |
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
http://delphi.ktop.com.tw/pop_profile.asp?mode=display&id=3241
這理底下的
發表文章數: 2615 觀看發表文章明細 , 討論文章明細 , 發問文章明細 或使用 KTOP搜索 按鈕 (每頁的左上角)看看有無神奇的事 或去買這本書也不錯啦
http://www.hot.net.tw/book/033/P2067.htm
《C++ Builder 與 Windows API 範例辭典》/鄭明、鄭世偉 【本書內容】
1.本書內含WinAPI函式高達132個函式,及208個完整、可執行的實例。
2.所有在Windows平台上撰寫視窗程式的程式設計師皆可適用、輕易上手。
3.提供視窗程式設計師在分秒必爭的工作中,更直觀、單純的支援。
4.在實例中,除指定API函式的用法外,並含括其它各類不同API函式。
5.包含有完整註解之滑鼠 & 鍵盤 Hook連接檔(DLL)與執行檔(EXE)程式碼。
6.書附光碟中的實例皆重新歸納至相同屬性的目錄下,方便程式設計師直接取用、複製。 發表人 - ab 於 2003/11/24 01:34:18
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
參數位置跟 DOS 指令用法一樣..沒有用到什麼特殊 API
用在舊版 Delphi 應該也可吧 ... _XCopy() 複製整個目錄
_Move() 搬移整個目錄
_DelTree() 刪除整個目錄
private { Private declarations } procedure _XCopy(ASourceDir:String; ADestDir:String); procedure _Move(ASourceDir:String; ADestDir:String); procedure _DelTree(ASourceDir:String); //--------------------------------------------------------------------------- procedure TForm1._XCopy(ASourceDir:String; ADestDir:String); var FileRec:TSearchrec; Sour:String; Dest:String; begin Sour:=ASourceDir; Dest:=ADestDir; if Sour[Length(Sour)]<>'\' then Sour := Sour '\'; if Dest[Length(Dest)]<>'\' then Dest := Dest '\'; if not DirectoryExists(ASourceDir) then begin ShowMessage('來源目錄不存在!!'); exit; end; if not DirectoryExists(ADestDir) then begin ForceDirectories(ADestDir); end; if FindFirst(Sour '*.*',faAnyfile,FileRec) = 0 then repeat if ((FileRec.Attr and faDirectory) <> 0) then begin if (FileRec.Name<>'.') and (FileRec.Name<>'..') then begin _XCopy(Sour FileRec.Name,Dest FileRec.Name); end; end else begin CopyFile(PChar(Sour FileRec.Name),PChar(Dest FileRec.Name),false); end; until FindNext(FileRec)<>0; FindClose(FileRec); end; //--------------------------------------------------------------------------- procedure TForm1._Move(ASourceDir:String; ADestDir:String); var FileRec:TSearchrec; Sour:String; Dest:String; begin Sour:=ASourceDir; Dest:=ADestDir; if Sour[Length(Sour)]<>'\' then Sour := Sour '\'; if Dest[Length(Dest)]<>'\' then Dest := Dest '\'; if not DirectoryExists(ASourceDir) then begin ShowMessage('來源目錄不存在!!'); exit; end; if not DirectoryExists(ADestDir) then begin ForceDirectories(ADestDir); end; if FindFirst(Sour '*.*',faAnyfile,FileRec) = 0 then repeat if ((FileRec.Attr and faDirectory) <> 0) then begin if (FileRec.Name<>'.') and (FileRec.Name<>'..') then begin _XCopy(Sour FileRec.Name,Dest FileRec.Name); _DelTree(Sour FileRec.Name); FileSetAttr(Sour FileRec.Name,faArchive); RemoveDir(Sour FileRec.Name); end; end else begin CopyFile(PChar(Sour FileRec.Name),PChar(Dest FileRec.Name),false); FileSetAttr(Sour FileRec.Name,faArchive); deletefile(Sour FileRec.Name); end; until FindNext(FileRec)<>0; FindClose(FileRec); FileSetAttr(Sour,faArchive); RemoveDir(Sour); end; //--------------------------------------------------------------------------- procedure TForm1._DelTree(ASourceDir:String); var FileRec:TSearchrec; Sour:String; begin Sour:=ASourceDir; if Sour[Length(Sour)]<>'\' then Sour := Sour '\'; if not DirectoryExists(ASourceDir) then begin ShowMessage('來源目錄不存在!!'); exit; end; if FindFirst(Sour '*.*',faAnyfile,FileRec) = 0 then repeat //if (FileRec.Attr = faDirectory) then if ((FileRec.Attr and faDirectory) <> 0) then begin if (FileRec.Name<>'.') and (FileRec.Name<>'..') then begin _DelTree(Sour FileRec.Name); FileSetAttr(Sour FileRec.Name,faArchive); RemoveDir(Sour FileRec.Name); end; end else begin FileSetAttr(Sour FileRec.Name,faArchive); deletefile(Sour FileRec.Name); end; until FindNext(FileRec)<>0; FindClose(FileRec); FileSetAttr(Sour,faArchive); RemoveDir(Sour); end;發表人 - bruce0211 於 2003/11/25 12:31:04 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |