Board logo

标题: 5K XCOPY 工具,支援長檔名、多來源、檔案列表等功能 [打印本页]

作者: silveregg     时间: 2007-4-1 17:42    标题: 5K XCOPY 工具,支援長檔名、多來源、檔案列表等功能

此程式的前身是 4K COPY 小工具
由於自己測試時發現一些 bug,且 Wengier 等人的建議都很有價值
所以決定重寫,並加入全新的功能
重寫雖然修正許多 bug,但也可能產生新的 bug
還請大家幫忙測試

參數說明:
XCP 來源 [來源 ...] [@檔案列表] [目的]
  來源可有多個,可用萬用符,最後一個參數指定目的
  檔案列表格式為一個檔案一行,列表可有多個,內容可用萬用符
  若只有一個參數,則視其為來源,目的為目前目錄,同 DOS 的 COPY
  /S         子目錄拷貝
  /M         移動檔案(和 /S 並用可移動目錄)
  /J          若目的已存在則結合檔案
  /D         指定目的為目錄
  /F          指定目的為檔案
  /V         檢驗拷貝結果
  /C         拷貝後比對結果
  /L         產生來源列表
  /B         拷貝時顯示簡短訊息(只顯示來源檔案)
  /Y         不詢問,總是回答 Yes
  /I          不詢問,總是回答 No (無傷害的)
  /R         不詢問,直接覆蓋唯讀檔案
  /N         即使在有長檔名支援的環境下也不使用長檔名

補充說明:
   1. 若無 /f 或 /d,且無法判斷目的為文件或目錄時,會出現詢問
       若目的結尾為 \ 符號,暗指目的為目錄

   2. 長檔名支援需在 Win9x/2K/XP 下或純 DOS 掛載 DOSLFN 或 LFNDOS

   3. 指定目的為目錄時,可自動建立不存在的目錄和子目錄
       如目的可為 1\2\3\4\ ,相應的目錄會自動建立

   4. 來源可為目的目錄的父目錄,不會進入無窮迴圈

   5. 拷貝時子目錄的上限為 24 層,超過的層數無法處理

http://zhenlove.com.cn/cndos/fileup/files/xcp13.zip

==========================================

1.4 版更新

新增參數:
  /U         只處理目的已存在的檔案
  /T         測試模式

其它修正項目:
   1. 使用 /T /L 時也會回報檔案個數

   2. 讀取檔案列表時,自動忽略以空格開頭的行
       如此一來用 /L 產生列表後,可直接由 @ 讀入

   3. 依 Wengier 的建議,忽略 /E /H

http://zhenlove.com.cn/cndos/fileup/files/xcp14.zip

==========================================

1.41 版更新

修正項目:
   1. 修正 /V 開關死鎖問題

   2. 修正 /U 開關建立空目錄問題

   3. 新增 ERRORLEVEL 返回碼,仿造 XCOPY 的值(誰知道為什麼沒有 3 啊
        0 複製成功
        1 無文件可複製
        2 Ctrl+C 或選取 Cancel 中斷操作
        4 命令行語法錯誤
        5 複製時讀寫發生錯誤
       -1 無參數或顯示說明

http://zhenlove.com.cn/cndos/fileup/files/xcp141.zip

==========================================

1.5 版更新

新增參數:
  /E        複製時包含空目錄(預設開啟)
  /T        建立樹狀構結而不複製檔案,可和 /E 並用
  /Z        檔案已存在時從中斷處繼續複製
  /A        只處理含有 ARCHIVE 屬性的檔案
  /H        複製時包括隱藏檔和系統檔(預設開啟)
  /O        複製成功後清除原始檔案的 ARCHIVE 屬性
  /P        複製時顯示進度
  /X        測試模式,也就是 1.4 版之前的 /T
  /G        複製時不檢查磁碟剩餘空間

修正項目:
   1. 複製中可用 Ctrl + C 中斷

   2. 判別四個常用的 DOS 裝置名稱: CON、PRN、AUX、NUL
       如此一來可用 xcp con a.txt /q /n 建立新檔

   3. 所有開關可用 +/- 來開啟關閉,如 /E- /H- 或 /-E /-H

   4. 傳統 XCOPY 中的 /M 開關,在 XCP 中應以 /A /O 代替

http://zhenlove.com.cn/cndos/fileup/files/xcp15.zip


==========================================

1.6 版更新

新增參數:
  /K        複製屬性(預設開啟)
  /W       將@符號視為檔名的一部份,而非檔案列表

修正項目:
   1. 修正處理 DOS 裝置名稱時發生的錯誤,感謝 Wengier 大提出
   2. 處理子目錄的上限增加至 35 層
   3. /R 開關改為「處理唯讀檔案」,預設開啟,若用 /-R 關閉,則 XCP 會跳過唯讀檔案
   4. 對於唯讀檔案的覆寫,改成只會出現一次提問
   5. 修正檔案列表最後一行無換行符號時發生錯誤
   6. 讓結合檔案時目的檔案的屬性保持不變
   7. 修正讀取檔案發生錯誤時,無錯誤訊息的 BUG
   8. 新增顯示建立子目錄的個數
   9. 加強錯誤訊息,更容易判斷命令列的問題所在
   10. 修正某些錯誤的 ERRORLEVEL 返回值

http://zhenlove.com.cn/cndos/fileup/files/xcp16.zip

==========================================

1.61 版更新

修正項目:
   1. 加強 "." 或 ".." (當前目錄、父目錄)的判別,並且可用 "..." 、 "...." 等指定 N 層之前的目錄
   2. 修正1.6版中 /P 顯示百分比的問題,並且加強換行時的處理
       此版開始應該不會再有換行時出錯的問題
   3. 加入以下保留設備的判別 LPT1、LPT2、LPT3、COM1、COM2、COM3、COM4
   4. 修正 Wengier 大提出的顯示問題

http://zhenlove.com.cn/cndos/fileup/files/xcp161.zip

==========================================

1.62 版更新

修正項目:
   1. 不詢問是否覆蓋 DOS 裝置
   2. 修正建立子目錄的個數計算錯誤
   3. 壓縮檔內加入中文說明檔

http://zhenlove.com.cn/cndos/fileup/files/xcp162a.zip

==========================================

1.63 版更新

更新項目:
   1. 命令列參數可連接並省略中間空白,如 /s/e-/h-
   2. 更新參數說明

http://zhenlove.com.cn/cndos/fileup/files/xcp163.zip

[ Last edited by silveregg on 2007-4-26 at 02:28 AM ]
作者: Wengier     时间: 2007-4-1 19:22
试了一下,总体上感觉不错,尤其是新增的filelist和/L等功能比较实用。

发现一个小问题:如果同时指定/I和/L开关的话,目前会显示所有文件(包括会被/I选项自动跳过的文件),而理论上此时/L开关似乎不应该显示目的地中已存在(而因会被/I选项自动跳过)的文件。

关于XCP的开关,因为许多人习惯使用XCOPY /S/E/H来复制所有目录下的内容(包含空目录和隐藏文件),建议XCP也可以接受/E和/H这两个开关(由于目前XCP预设情况下已可以复制空目录和隐藏文件,所以也可以采取接受它们但自动忽略它们的办法)。另外还可以考虑将XCOPY的/U开关(更新已存在的文件)加入到XCP中。
作者: silveregg     时间: 2007-4-2 06:34
XCP 裡設計的 /L 和一般 XCOPY 的 /L 不太一樣
因為 XCP 可以載入檔案列表,所以設計了一個產生列表的功能
所以若指定了 /L 參數,並不需要指定目的,只列出所有來源
轉向輸出成文字檔後,可以編輯過再傳給 XCP 執行
當然用 DIR /B 也可以產生列表,不過若有多個來源,就必需分成多次執行了

我發現 XCOPY 的 /L 參數,比較類似 XCP 裡的 /T 參數,可以視為測試執行結果
和 /L 的差別在於, /T 會試著執行所有的動作,判別目的檔案、跳出詢問等
而 /L 只是為了產生來源檔案列表,不會做任何詢問
不過 /T 的功能還不完善(比如不會回報檔案數等),應該還會再做修改

至於 /E /H /U 等參數,在未來的版本會考慮加入
作者: xugaohui     时间: 2007-4-2 10:51
太好了,支持作者!这个软件太好了,打算把它加入到 PXE网络维护软件包中。
以前纯dos下目前唯一好用的xcopy是HX DOS extender 环境下的,它在却在vpc上不能运行。现在终于被楼主的程序代替了
作者: silveregg     时间: 2007-4-2 12:09
其實我也是苦於沒有適合的 XCOPY 工具可以放到啟動盤中,才會想要自己動手寫的
所以也不追求太多功能,只要小巧、夠用就好了

--
已更新版本,目前在正常使用下應該沒有問題
只擔心一些例外況狀的處理不夠完善而已
作者: Wengier     时间: 2007-4-2 13:58
楼上说得不错,XCP是相当实用的程序。

以下是与/U开关有关的问题:

如果同时指定/S和/U的话,如果源目录下有子目录而目的目录下没有这些子目录,XCP将会在目的目录下建立它们。从理论上来说/U似乎不应该建立不存在的目录,建议直接跳过它们。

如果同时指定/T和/U的话,XCP对于每个已存在的文件会提示是否覆盖相应文件,此时无论回答Yes或No的结果相同。不过这似乎与/T的开关说明"Displays files that would be copied"有些不符。建议此时只列出将要复制的文件而不提示是否覆盖,或者将/T的开关说明正式改为"Test mode"。

另外建议加入ERRORLEVEL返回码功能,以可以在批处理文件中判断复制状态。可以参考一下DOS/CMD下自带的XCOPY的ERRORLEVEL返回码(详见这儿):

0 复制成功
1 找不到要复制的文件
2 用户按Ctrl+C中断了操作
4 初始化错误(如内存不足、磁盘空间不足、命令行语法错误等)
5 磁盘写错误
作者: silveregg     时间: 2007-4-2 19:14
/U 和 /T 的問題會再研究一下
其實 Wengier 說的沒錯, /T 應該叫做 test mode 比較好
那個說明訊息是抄XP的XCOPY來的,可惜意思不夠精確

ERRORLEVEL 其實目前的版本已有設定,大致如下
0 複製成功
1 使用者中斷(指按下 CANCEL 的情況,我並沒有用自己的代碼處理 Ctrl+C)
2 初始化錯誤
3 複製過程中有錯誤發生
-1 顯示說明檔

不過我剛剛看了一下程式碼才發現,原來自己是笨蛋
返回值設好後又被蓋掉了,所以之前發的版本暫時還沒有 ERRORLEVEL
作者: Wengier     时间: 2007-4-2 20:14
刚发现如果使用/V开关好像会造成死锁,例如输入xcp a.txt b.txt /v后就没反应了。
作者: silveregg     时间: 2007-4-3 05:03
請問有人知道 DOS 的 Verify 功能隱當嗎? (AH=2Eh, INT 21h)

XCP 中 /V 開關是開啟 DOS 的 Verify 功能,/C 開關是在複製完成之後再讀入、比對一次
因為我查的資料中沒有詳細提及 DOS 的 Verify 會不會 byte by byte 的比對資料,所以才加上 /C 開關
但是不是多此一舉呢?
作者: Wengier     时间: 2007-4-3 15:37
看了一下,这方面的详细资料确实不太多。能找到的关于VERIFY功能的资料如:

http://www.frameworkpascal.com/helphtml/getverify_proc.htm
http://www.freepascal.org/docs-html/rtl/dos/setverify.html

另外建议给XCP加入XCOPY的/Q开关,不显示来源文件名。有时候这个开关还是有用的,比如XCP A.TXT CON /Y可以把A.TXT复制到保留设备CON中,相当于将A.TXT的内容直接在屏幕上显示出来;而XCP CON A.TXT可以手工输入内容以建立A.TXT这个文件(如使用XCP CON A.TXT /J还可以输入内容以append这个文件)。但如果显示来源文件名的话会和屏幕上显示或输入的文件内容发生一些冲突。
作者: chenall     时间: 2007-4-5 12:31
有了这个就可以替换启动盘中的XCOPY了.
作者: GOTOmsdos     时间: 2007-4-5 22:47
恩,很惊奇! 4,5K能作出来?
只有用汇编才能做的吧?
一定下来试试!
作者: silveregg     时间: 2007-4-6 12:30
呵呵,不完全是用彙編喔
我用的語言叫 sphinx c--,是一個介於彙編、C、C++之間的語言
簡單的函式和一些系統相關的呼叫是用彙編
比較複雜的條件判斷、比較式則用C語法
所以彙編只佔了50%左右

而且原始的執行檔是8K
再用apack壓才壓到5K(DOS的程式apack比upx強)

貼一小段程式給各位看看
這段混雜者C和彙編語法的函式,用來建立所有不存在的子目錄
int mkpath(char *path)
{
        int levelcount = 0;

        WHILE(!fileexist(path)) && (STRLEN(path) > 2)
        {
                BX = STRRCHR(path, '\\');
                DSBYTE[BX] = 0;
                levelcount++;
        }

        LOOPNZ(levelcount)
        {
                BX = path;
                BX += STRLEN(BX);
                DSBYTE[BX] = '\\';
                mkdir(path);
                IF(CARRYFLAG) RETURN FALSE;
        }
        RETURN TRUE;
}
--
另外, /Q 的功能已加入
但如此一來說明畫面剛好超過一頁(一頁多一行)
所以想說乾脆一次加多一點功能,要超過一頁也一次超過多一點

[ Last edited by silveregg on 2007-4-5 at 11:33 PM ]
作者: Wengier     时间: 2007-4-6 14:23
嗯,多加一些功能也好呢。

建议继续加入以下开关:

/A:只复制带有Archive属性的文件(类似XCOPY的/A开关,相当于复制标记功能)
/Z:复制时显示已复制的百分比(类似CMD下COPY的/Z开关;而CMD下XCOPY的此开关不起作用,估计有BUG)

同时关于/H开关:不妨将XCP的复制方法改为和COPY/XCOPY一致,预设情况下不复制隐藏和系统文件,而如果指定/H开关的话则复制这些文件,这样/H开关就真正有效了。
作者: GOTOmsdos     时间: 2007-4-6 23:04
Sphinx
听说过,...意思好象是司芬克斯吧?

上段代码中, 发现 :
WHILE(!fileexist(path)) && (STRLEN(path) > 2)
跟C不一样, 括号范围不一样
作者: silveregg     时间: 2007-4-6 23:47
嗯,C-- 中有一些用法和 C 類似但不完全一樣
像 GOTOmsdos 兄提出的地方就是和 C 的差別之一
另外還有一些像是變數取扯的符號,C 是用 &, C-- 用 #
不過大體而言,大部份的 C 程式可以輕易的轉換成 C-- 程式

舉例來說,以下這個 4.5K 的 Win32 Console MD5 程式(用 UPX 壓成 3.5K)
就是將 C 源碼用 C-- 改寫之後編譯出來的,用其他任何語言都很難達到(除了彙編以外),而且運算的速度飛快
另外也附上 C 源碼的下載處,各位有空可以用其它 C Compiler 編譯出執行檔
再和 C-- 版本的比較看看

執行檔 http://zhenlove.com.cn/cndos/fileup/files/md5c--.zip
C 源碼 http://www.tux.org/pub/security/md5/

PS. 此版本的執行檔經過我的修改,可以直接在純 DOS 下用 HX 運行
作者: GOTOmsdos     时间: 2007-4-7 13:08
刚刚试用了一下,觉得还不错!
功能还挺多,支持
作者: Wengier     时间: 2007-4-8 21:41
C--和普通的C相比优点确实很明显--尤其是体积小、速度快。和32位的编译器(如GCC)相比就更加明显了。一般用DJGPP编译出来的程序,即使是只显示一行文字的程序都有几十KB大小,比这个XCP大多了。

不知道这两天XCP有什么新变化了吗?
作者: silveregg     时间: 2007-4-10 05:00
XCP 1.5 版已上傳,由於修改部份較多(除了新增功能外還重寫部份程式碼以減小檔案大小),需要更多的測試才能完善。

新增的參數中 /P(顯示進度)因為游標移動不好處理,遇到換行時可能會有一些問題,不過應該沒有太大的影響。

另外,1.5 版就算使用 APACK 壓縮還是守不住 5K 的大關,所以此篇篇名已經名不符實了 XD
作者: wang6610     时间: 2007-4-10 05:43
下了一个新的有空测试。
作者: Wengier     时间: 2007-4-10 17:03
呵,新版本加入了这么多功能还能保持在5.8KB已经相当不错了,不仅比XCOPY小得多,而且也实用得多。另外,发现现在26个英文字母已经用了24个了,只差/K和/W了。
作者: Wengier     时间: 2007-4-13 02:33
这两天做了不少测试,没有发现什么大问题,可见这个版本还是比较稳定的。只发现一个与con有关的小问题:当使用xcp con xxx这种形式,而如果xxx是一个已存在的目录时,会出现奇特的现象:如果是在纯DOS下的话xcp会自动在此目录下建立一个名称很特别的文件,而如果是在XP的CMD下则可能会停止响应。

另外,准备加入XCOPY的/K和/W开关吗?
作者: silveregg     时间: 2007-4-14 12:57
感謝 Wengier 大的用心測試!
這次除了把一些 bug 修掉以外,也加入了最後想到的兩個開關,終於把所有字母都用完了

另外,在 XP 下的長檔名呼叫和一般呼叫,對 CON 等裝置名稱的處理方式不同
可以用 /N 開關測試看看,不用長檔名呼叫的處理比較完善
作者: Wengier     时间: 2007-4-14 17:16
试了一下,觉得不错。

发现一个BUG:如果当前目录为根目录的话,.(小数点)是无效的,例如在根目录下执行xcp . test会报错。同样,如果..(即父目录)指向根目录的话xcp复制时也会失败。如果.和..指向其它子目录则没有这个问题。

同时建议将使用/P开关时显示的Scanning...x files这行中的files改为file(s),因为如果只有一个文件的话也会错误显示为1 files。

另外,建议再加入识别以下保留设备:LPT1、LPT2、LPT3、COM1、COM2、COM3、COM4,这样基本上就全了(所有的保留设备列表可见这儿:http://support.microsoft.com/kb/100108)。
作者: silveregg     时间: 2007-4-15 01:36
. 和 .. 等目錄,原本都直接由 DOS 的 truename 呼叫來處理
經測試在 /n 和沒有 /n 的情況下會有不同的結果,非常討厭
所以新版改成直接由程式處理

目前已知問題:如果指定的目錄為 ..\ 且開啟 /n 開關,就無法顯示正確的目錄
但執行結果不受影響

以後會盡量不經由 DOS 呼叫,由程式直接處理 truename 的功能
不過這真是一件很麻煩的事 >_<
作者: Wengier     时间: 2007-4-17 02:24
现在XCP的功能应该已经十分完善了,不妨写一个简单的README.TXT文件来系统的介绍一下用法和举例,以方便更多人上手和体会它的优点。
作者: hack38     时间: 2007-4-18 04:07


  Quote:
Originally posted by Wengier at 2007-4-17 02:24:
现在XCP的功能应该已经十分完善了,不妨写一个简单的README.TXT文件来系统的介绍一下用法和举例,以方便更多人上手和体会它的优点。

刚刚想发帖子问这个的用法的~~

嘿嘿。。。。

楼主写个中文版本的说明文件吧。。。:D

俺E文差。。。:(
作者: silveregg     时间: 2007-4-18 04:54
我不是很在行寫說明文件,而且最近工作又忙了起來
有人可以幫忙嗎?

hack38兄不會用的話可以先參考一樓的更新記錄
基本上用法跟傳統的xcopy沒有太大的差異
作者: cchessbd     时间: 2007-4-18 06:28


  Quote:
Originally posted by silveregg at 2007-4-18 04:54:
我不是很在行寫說明文件,而且最近工作又忙了起來
有人可以幫忙嗎?

hack38兄不會用的話可以先參考一樓的更新記錄
基本上用法跟傳統的xcopy沒有太大的差異

帮助xcp /? 得到的 /e 参数好像与说明不符。

还有就是参数组合后,顺序改变,好像有时会出问题。
你看看是否参数有优先权的问题。
不记得是哪个组合了。试验半天也没弄出来。

日后碰到再回。
作者: hack38     时间: 2007-4-18 06:35


  Quote:
Originally posted by silveregg at 2007-4-18 04:54:
我不是很在行寫說明文件,而且最近工作又忙了起來
有人可以幫忙嗎?

hack38兄不會用的話可以先參考一樓的更新記錄
基本上用法跟傳統的xcopy沒有太大的差異

你可以把内带的帮助改成简单的中文么?

xcp /?

听Wengier说26个字母就已经用了24个字母做参数了

一楼里面只有几个而已哦~~~
作者: silveregg     时间: 2007-4-18 08:35


  Quote:
Originally posted by hack38 at 2007-4-17 05:35 PM:
一楼里面只有几个而已哦~~~

一樓有把總共26個參數都列出來喔
作者: silveregg     时间: 2007-4-18 13:27
1.62 版修正一個小問題,並加入了中文的說明檔
說明檔內容如下:

  Quote:
-----------------------------------------------
XCP v1.62 Copyright (C) SilverEgg 2007 說明文件
-----------------------------------------------

一、命令列與參數說明

XCP 來源 [來源 ...] [@檔案列表] [目的] [參數]
    來源可有多個,可用萬用符,最後一個參數指定目的
    檔案列表格式為一個檔案一行,列表可有多個,內容可用萬用符
    若只有一個參數,則視其為來源,目的為當前目錄,同 DOS 的 COPY

    /S      複製子目錄
    /E      複製時包含空目錄(預設開啟)
    /T      建立樹狀構結而不複製檔案,可和 /E 並用
    /M      移動檔案(和 /S 並用可移動目錄)
    /J      若目的檔案已存在則結合檔案
    /Z      若目的檔案已存在則從中斷處繼續複製
    /D      指定目的為目錄
    /F      指定目的為檔案
    /A      只處理含有 ARCHIVE 屬性的來源檔案
    /U      只處理已存在於目的的檔案
    /H      複製時包括隱藏檔和系統檔(預設開啟)
    /O      複製成功後清除來源檔案的 ARCHIVE 屬性
    /K      複製屬性(預設開啟)
    /V      複製時開啟 DOS 內建的寫入檢驗
    /C      複製後逐一位元組比對是否相等
    /Q      複製時不顯示檔案名稱
    /B      複製時只顯示來源檔案
    /P      複製時顯示進度
    /X      測試模式,只顯示結果而不寫入磁碟
    /L      產生來源列表(不需指定目的)
    /Y      不詢問,直接覆寫已存在的檔案
    /I      不詢問,直接跳過已存在的檔案
    /R      複製時不跳過唯讀目的檔案(預設開啟)
    /G      複製時不檢查磁碟剩餘空間(可在 XP 下複製大檔案)
    /N      即使在有長檔名支援的環境下也不使用長檔名功能
    /W      將 @ 符號視為檔名的一部份,而非檔案列表


    1.  所有參數可用 +/- 來開啟關閉,如 /E- /H- 或 /-E /-H
        但通常只有四個預設開啟的參數: /E /H /K /R 需要加上 - 號

    2.  目的結尾為 \ 符號,暗指目的為目錄
        若無 /F 或 /D,且無法判斷目的為檔案或目錄時,會出現詢問

    3.  指定目的為目錄時,可自動建立不存在的目錄和子目錄
        如目的可為 1\2\3\4\ ,相應的目錄會自動建立

    4.  除了 DOS 原本的 "." 或 ".." (當前目錄、父目錄)以外
        可用 "..." 、 "...." 指定 N 層之前的目錄


二、重要用法說明

    1.  開頭加 @ 讀取檔案列表時,會自動忽略空格開頭的行
        所以可用 /L 產生列表並轉向至檔案 list 後,再用 @list 讀入

    2.  複製中可用 Ctrl + C 中斷,之後加上 /Z 參數可從中斷處繼續複製

    3.  傳統 XCOPY 中的 /M 開關,在 XCP 中應以 /A /O 代替


三、使用限制

    1. 複製時使用 /S 參數,子目錄的上限為 35 層

    2. 長檔名支援需在 Win9x/2K/XP 下或純 DOS 掛載 DOSLFN 或 LFNDOS


四、返回碼(ERRORLEVEL)

    0       複製成功
    1       無文件可複製
    2       Ctrl+C 或選取 Cancel 中斷操作
    4       命令行語法錯誤
    5       複製時讀寫發生錯誤
   -1       無參數或顯示說明


五、更新記錄

    1.62    不詢問是否覆蓋 DOS 裝置

    1.61    加強 "." 或 ".." (當前目錄、父目錄)的判別
            可用 "..." 、 "...." 等指定 N 層之前的目錄
            加入 LPTn 和 COMn 等 DOS 裝置的判別
            修正 /P 顯示百分比的問題,並且加強換行時的處理
            修正 Wengier 大提出的顯示問題

    1.6     新增顯示建立子目錄的個數
            /R 開關改為「處理唯讀檔案」,若關閉則 XCP 會跳過唯讀檔案
            處理子目錄的上限增加至 35 層
            對於唯讀檔案的覆寫,改成只會出現一次提問
            讓結合檔案時目的檔案的屬性保持不變
            加強錯誤訊息,更容易判斷命令列的問題所在
            修正檔案列表最後一行無換行符號時發生錯誤
            修正讀取檔案發生錯誤時,無錯誤訊息的 BUG
            修正處理 DOS 裝置名稱時發生的錯誤,感謝 Wengier 大提出
            修正某些錯誤的 ERRORLEVEL 返回值

    1.5     新增 /E /T /Z /A /H /O /P /X /Q 等參數
            判別常用的 DOS 裝置名稱
            加入可用 Ctrl + C 中斷程式

    1.41    修正 /V 開關死鎖問題
            修正 /U 開關建立空目錄問題

    1.4     新增 /U /T 參數
            使用 /T /L 時也會回報檔案個數

英文的就再說吧 XD
作者: wang6610     时间: 2007-4-18 21:10    标题: 简体readme.txt

简体readme.txt

[ Last edited by wang6610 on 2007-4-20 at 02:15 AM ]
附件 1: readme_chs.txt (2007-4-20 02:15, 3.15 K,下载次数: 54)

作者: cchessbd     时间: 2007-4-20 01:45
最新版本 xcp /?

/S           Copies directories and subdirectories.
/E           Copies directories and subdirectories, including empty ones.
好像 /E 的参数说明要改下,否则 /S还需要吗
作者: Wengier     时间: 2007-4-20 02:19


  Quote:
Originally posted by cchessbd at 2007-4-19 12:45 PM:
最新版本 xcp /?

/S           Copies directories and subdirectories.
/E           Copies directories and subdirectories, including empty ones.
好像 /E 的参数说明要改下,否则 /S还需要吗

我也早已注意到这个问题了。只是觉得大家心里都明白其真正的意思,所以也没好提出来。
作者: silveregg     时间: 2007-4-20 02:49


  Quote:
Originally posted by cchessbd at 2007-4-19 12:45 PM:
最新版本 xcp /?

/S           Copies directories and subdirectories.
/E           Copies directories and subdirectories, including empty ones.
好像 /E 的参数说明要改下,否则 /S还需要吗

這是為了和傳統的 xcopy 相容
這兩句說明也是從傳統的 xcopy 抄來的

對 xcp 而言,/s 是開啟子目錄複製,/e 是處理子目錄時包括空目錄
所以 xcp 的 /s 和 /e 都是開關!

但只開啟 /e 而不開啟 /s 顯然完全無用,所以當程式遇到 /e 參數(不論+/-),都會自動開啟 /s
同理, /t 也一樣會自動開啟 /s
而預設的情況下,/s 是關閉的,/e 是開啟的

所以不論單用 /s ,或照者傳統 xcopy 的習慣用 /s /e, 或單用 /e,都是複製子目錄,包括空目錄
而特別指明 /s /e-,或是直接用 /e-,則是複製子目錄,不包括空目錄

當然,說不需要 /s 也是沒錯....因為用 /e 或 /e- 就可以包括所有情況
但畢竟 /s 還是最習慣的用法,所以也保留了下來
作者: Wengier     时间: 2007-4-20 03:58


  Quote:
Originally posted by silveregg at 2007-4-19 01:49 PM:


這是為了和傳統的 xcopy 相容
這兩句說明也是從傳統的 xcopy 抄來的

對 xcp 而言,/s 是開啟子目錄複製,/e 是處理子目錄時包括空目錄
所以 xcp 的 ...

这些说的都没错。其实本来我并没准备说这个问题的,不过既然cchessbd把它提出来了,我也就说明一下吧。

从我的测试结果来看,目前的说明或设定确实有可能使部分人(如cchessbd)产生一种/E参数存在问题的感觉,原因如下:

XCP/?会显示“By default, /E /H /K and /R are turned on”,即预设情况下/E等开关是开启的,通常的理解就是如果在命令行下不去手工指定/E(不管是+还是-)的话那么就相当于自动指定了/E参数。换句话说,按照这种理解,下面的用法应该等同:

XCP A B
XCP A B /E

但是经过测试证明两者的作用并不一定相同。如果源目录A下有子目录的话,那么如果用前者则这些子目录不会被复制,而如果用后者则它们会被复制。所以,目前有关/E参数的说明或设定确有可能使部分人造成误解。
作者: cchessbd     时间: 2007-4-20 04:10
Please show your switch exactly.

I'm using "xcp.com" but not "xcopy.com".
作者: silveregg     时间: 2007-4-20 06:43
Wengier 和 cchessbd 說的沒錯
所以 /e 的說明應該指明這只是一個預設開啟的開關,並且只和 /s 併用時有效
不過這樣子如何用英文簡短的表達呢,麻煩大家一起幫忙想想
因為我希望說明畫面可以簡潔一點,一個參數一行
不要像 xcopy 都還要換行才寫的完

一人計短,兩人計長~
集思廣義一下
作者: cchessbd     时间: 2007-4-20 06:53
/e include empty directory 在复制某目录中的文件(*.*)或目录(有/s)才起效
/s include sub directory 包括子目录

这样就易于理解了
把帮助分屏显示;要不就精简一下,一屏显示完,这倒是我希望的。

嘿嘿,谢谢了!
作者: Wengier     时间: 2007-4-20 18:56


  Quote:
Originally posted by silveregg at 2007-4-19 05:43 PM:
Wengier 和 cchessbd 說的沒錯
所以 /e 的說明應該指明這只是一個預設開啟的開關,並且只和 /s 併用時有效
不過這樣子如何用英文簡短的表達呢,麻煩大 ...

以下两种方案也许可行:

方案1:采用XCOPY的处理方法,即/S用于复制除空目录外的所有目录,而/E用于复制包括空目录的所有目录。此时/S /E与单独/E等同。预设情况下两者均关闭。

方案2:将/E的说明改为类似"When copying directories, includes empty ones",即把/E当作一个flag或switch,只在"copy directories"时有效,而非一个像上面那样的独立用途的参数。这个flag预设为开启(和现在一样,可以用/-E或/-E来关闭),但它只有当命令行中存在/S或/T参数时才能起到作用。

另外,建议不强制开关之间带有空格(类似XCOPY),即支持例如/P/X这样的用法,而不一定要在中间加空格(如:/P /X)。目前不加空格的话后者会被忽略。
作者: game     时间: 2007-4-21 09:53
我正需要这个,看看是什么
作者: bc12060101     时间: 2007-5-1 12:18
很不错的软件!顶一下
作者: johnsonlam     时间: 2007-5-4 09:46


  Quote:
Originally posted by Wengier at 2007-4-20 06:56 PM:
方案1:采用XCOPY的处理方法,即/S用于复制除空目录外的所有目录,而/E用于复制包括空目录的所有目录。此时/S /E与单独/E等同。预设情况下两者均关闭。

我 個 人 覺 得 不 必 拘 泥 MS-DOS 做 法 , 但 在 說 明 中 或 help 內 要 寫 很 清 楚 和 加 上 示 範 。

我 偏 向 選 擇 『 最 安 全 』的 用 法 , 在 copy 程 序 中 『 所 有 都 抄 』 就 應 該 是 最 好 的 , 萬 一 錯 了 、 多 抄 了 不 要 的 , 稍 後 刪 掉 就 好 。

/E 則 可 以 是 忽 略 空 目 錄 , 這 樣 做 好 處 是 默 認 時 不 用 加 許 多 參 數 , 壞 處 是 放 棄 MS-DOS 一 貫 作 風 。

  Quote:
方案2:将/E的说明改为类似"When copying directories, includes empty ones",即把/E当作一个flag或switch,只在"copy directories"时有效,而非一个像上面那样的独立用途的参数。这个flag预设为开启(和现在一样,可以用/-E或/-E来关闭),但它只有当命令行中存在/S或/T参数时才能起到作用。

個 人 覺 得 /-e 其 實 有 點 混 淆 , 容 易 誤 導 用 戶 。

默 認 應 該 選 用 最 普 及 或 最 安 全 的 用 法 , 參 數 是 應 付 特 殊 需 要 , 這 樣 對 大 部 份 用 戶 最 方 便 。

還 有 , 建 議 採 用 環 境 變 數 , 例 如 :

set xcp=/s /d /y

作者: Wengier     时间: 2007-5-14 02:54
今天注意到解决了以上问题的1.63版已经在顶楼推出了,只是由于一直未看到有正式的宣布所以之前没有发现。顺便说一下,现在DOSLFN已经有了0.40f测试版,可以将CJK代码页放到XMS中减少low memory占用,所以配合起来用更方便了。
作者: cchessbd     时间: 2007-5-14 08:26


  Quote:
Originally posted by Wengier at 2007-5-14 02:54:
今天注意到解决了以上问题的1.63版已经在顶楼推出了,只是由于一直未看到有正式的宣布所以之前没有发现。顺便说一下,现在DOSLFN已经有了0.40f测试 ...

看来还是得跟上Wengier。

顺便问一下Wengier: FAT32分区,ID为 0B与 ID为 0C有什么不一样的地方?

能否详细解释一下?
作者: Wengier     时间: 2007-5-14 09:02


  Quote:
Originally posted by cchessbd at 2007-5-14 08:26 AM:


看来还是得跟上Wengier。

顺便问一下Wengier: FAT32分区,ID为 0B与 ID为 0C有什么不一样的地方?

...

两者分别是CHS和LBA格式的FAT32分区,CHS硬盘的最大容量是8GB,而LBA硬盘可轻易超过这个数量,所以现在的硬盘一般都是LBA的了。
作者: cchessbd     时间: 2007-5-14 10:09
谢谢!

我从移动硬盘启动GRUB4DOS,提示说什么:
……bios limit (1024)……,跟分区ID有关系的吗?

我的主分区有5G,FAT32---0B。
作者: Wengier     时间: 2007-5-14 11:08


  Quote:
Originally posted by cchessbd at 2007-5-14 10:09 AM:
谢谢!

我从移动硬盘启动GRUB4DOS,提示说什么:
……bios limit (1024)……,跟分区ID有关系的吗?

我的主分区有5G,FAT32---0B。

这个问题跟主题没有什么关系,建议还是发到论坛的GRUB4DOS专区中吧。
作者: darkradx     时间: 2007-5-14 17:57
DOSLFN现在作者把它放哪里了?
它的主页已经down掉了...
作者: johnsonlam     时间: 2007-5-15 10:05


  Quote:
Originally posted by darkradx at 2007-5-14 05:57 PM:
DOSLFN现在作者把它放哪里了?
它的主页已经down掉了...

http://www.geocities.com/jadoxa/doslfn/index.html

作者: mrli     时间: 2007-8-31 09:49
试用了一下最新版的,感觉不错。如果复制速度能再快些就更好了。
作者: ekingfan     时间: 2007-10-13 17:18
都不能下载的..哪里能下载啊?
作者: l106388     时间: 2007-10-13 23:50
请给下载地址
作者: lianjiang2004     时间: 2007-10-16 11:31
这么好的工具,谁能否重新上传一个,也可上传到我的网盘。
http://lianjiang2004.ys168.com/
111目录,密码:lianjiang2004
我再放到其它目录里供下载。
作者: rodsgo     时间: 2007-10-25 17:36
下载不了啊,前几天恢复数据才发现有此需求,但是下载不了,没有源了
有谁可以提供一下啊
作者: crocodile     时间: 2007-11-9 22:35
http://www.z4.cn/deal/?/tools/dos/xcp163.zip
作者: waidos     时间: 2007-11-11 03:12
谢谢 crocodile
提供下载地址!!!
作者: py13123     时间: 2008-1-5 17:51
多加一些功能也好呢
作者: secowu     时间: 2008-3-1 18:40
这么好的东西,竟然下载不到了
作者: secowu     时间: 2008-3-1 18:41
为什么不上传到坛里啊?整个附件嘛
作者: secowu     时间: 2008-3-1 18:42
---------------------------
7-zip
---------------------------
无法作为压缩档案打开文件 'J:\xcp163.zip'
---------------------------
确定   
---------------------------
作者: caojianli     时间: 2008-5-4 10:11
下载不了 能修复一下吗
作者: caojianli     时间: 2008-5-4 10:34
能提供和XXCOPY里/bi功能 只复制和原文件不同的文件参数吗?
作者: flower00016     时间: 2008-11-15 17:05
很找了一会,在另一个帖子里,找到了,转贴到这里来,有使用说明。

XCP v1.63 Copyright (C) SilverEgg

[ Last edited by flower00016 on 2008-11-15 at 17:09 ]
作者: apo126     时间: 2009-1-29 15:05
XXCOPY /PB,复制完了,会显示复制速度和时间。
请问XCP是否有这样的功能?
作者: woaicaomei     时间: 2010-8-5 22:05
楼主哦,下不了哦。。。
作者: mengqiu     时间: 2010-10-6 06:43
下载链接失效