philfeng提到:
且 copy 過去後不分子目錄 也就是放在根目錄
要做到這樣的功能,DOS 的 XCOPY 是做不到的!
頂多就是,原來是子目錄的在複製後,它還是「子目錄」,厲害吧?
xcopy a:\. d:\. /s /d /y (不含空目錄,如要連空目錄的也一起copy,要改用/E)
xcopy b:\. d:\. /s /d /y
/S 複製每個目錄及其包含的子目錄
/E 複製每個目錄及其包含的子目錄,也複製空目錄
/D 複製發生變更的檔案
/Y 所有覆蓋的詢問都回答 YES
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\r
[/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 顯示要複製的檔案。
/G 允許加密檔案複製到不支援加密的
目的地。
/H 時複製隱藏檔和系統檔。
/R 覆蓋唯讀檔案。
/T 建立目錄結構,但不複製其中的檔案。不包括空目錄及子目錄。
/T /E 會包括空目錄及子目錄。
/U 只複製已經存在目的位置的檔案。
/K 複製檔案屬性。通常 Xcopy 會重設唯讀的屬性。
/N 用所產生的短檔名來進行複製。
/O 複製檔案所有權及 ACL 資訊。
/X 複製檔案審查設定 (包含 /O)。
/Y 不要提示您確認是否要覆蓋一個已經存在的檔案。
/-Y 示您確認是否要覆蓋一個已經存在的檔案。
/Z 在可重新開始的模式中複製網路檔案。
參數 /Y 可以在 COPYCMD 環境變數中預先設定。但可以在命令列中用 /-Y 參數
來覆蓋原有設定。
===> xcopy a:\*.* d:\. /s/f/v
其實重點應該是在於, 把 A: 或 B: 的檔案及目錄都 copy 到 D: 的根目錄..
一行搞定的方式...
dir /s/b A: >> C:\list.txt & for /f %a in (C:\list.txt) do xcopy %a D:\ /y & del C:\list.txt
弄成批次檔就是...
<pre class="c" name="code">
Dir /s /b A: >> C:\AList.txt
For /f %%a in (C:\AList.txt) do Xcopy %%a D:\ /y
Del C:\AList.txt
解釋
Dir /s /b A: >> C:\AList.txt
→ 將 A: 磁碟內的所有檔案目錄以清單的方式輸出至 C:\AList.txt 檔案中.
For /f %%a in (C:\AList.txt) do Xcopy %%a D:\ /y
→ 讀取 C:\AList.txt 檔案裡的清單, Xcopy 至 D:\ 下.
Del C:\AList.txt
→ 刪除剛剛輸出的檔案清單, 不刪掉下次會越來越多.
非常的感謝您的回答,看來真是詳細和可行,不過今天剛好休假在家,家中也沒軟碟,待明天上班再試看看 謝謝啦
原來,提出可行的解答者,最後並不是最佳解答...好怪的機制
sailsolitary
假設我建立一個檔案AList.txt在C碟
請問直接把上述的copy到記事本上把副檔名改成bat就可以了嗎?
<pre class="c" name="code">
Dir /s /b A: >> C:\AList.txt
For /f %%a in (C:\AList.txt) do Xcopy %%a D:\ /y
Del C:\AList.txt