php xcopy,xcopy命令部分用法总结

本帖最后由 yjqd 于 2018-4-13 23:02 编辑

在制作pe时,经常需要把文件拷贝到相应的目录中,手工或copy命令都太麻烦,用xcopy就容易多了,发贴以作备忘

目录:

一、xcopy在拷贝时具有建立文件夹的功能,和md类似

二、拷贝时提示 是文件名还是目录名

三、xcopy命令通配符的运用

四、xcopy参数的运用

五、应用举例

---------------------------------------------------------------------------------------------------------------------------

一、xcopy在拷贝时具有建立文件夹的功能,和md类似

md在D:\练习\BB中建立文件夹目录A\B\C

在BB文件夹中打开命令提示符,输入命令:

md A\B\C

也可以写全路径:

md D:\练习\BB\A\B\C

结果和前面一样,只会建立A\B\C文件夹目录

xcopy在拷贝时具有建立文件夹的功能,和md类似

不同点:

md建立文件夹时单双斜线都可以

md cc\kk\

md cc\kk\\

xcopy在拷贝时命令中的目标路径最后只能加单斜线,不能加双斜线

比如,目标实际路径D:\练习下没有CC文件夹

xcopy E:\AA\* D:\练习\CC\\

执行结果如下:

"文件创建错误 - 当文件已存在时,无法创建该文件。

无法创建目录 - D:\练习\CC\

复制了 0 个文件"

实际结果为创建了文件夹CC但没拷贝文件

目标实际路径D:\练习下没有CC文件夹时,情况和前面一样

---------------------------------------------------------------------------------------------------------------------------

二、拷贝时提示 是文件名还是目录名

xcopy E:\AA\AA.txt D:\练习\AA.txt

目标 D:\练习\AA.txt 是文件名

还是目录名

(F = 文件,D = 目录)?

xcopy E:\AA\AA.txt D:\练习\CC

目标 D:\练习\CC 是文件名

还是目录名

(F = 文件,D = 目录)?

上面示例中,目标是文件或是文件夹都出现了:目标 xxx 是文件名还是目录名的提示

原因:

目标实际路径中没有与命令中目标对应的文件AA.txt或文件夹CC

解决办法:

目标是文件时,按F键

执行结果,拷贝了AA.txt到D:\练习中

注意:

如果命令中目标文件名是通配符*或.,且实际目标路径和命令中目标路径相同时,则不会出现是文件名还是目录名的提示

xcopy E:\AA\AA.txt D:\练习\*

xcopy E:\AA\AA.txt D:\练习\.

如果实际目标路径和命令中目标路径不相同时,且命令中目标文件名是通配符.,会出现是文件名还是目录名的提示

实际目标路径为 D:\练习

命令中目标路径D:\练习\CC

xcopy E:\AA\AA.txt D:\练习\CC\.

目标 D:\练习\CC\. 是文件名

还是目录名

(F = 文件,D = 目录)?

目标是文件夹时,按D键

执行结果,创建了CC文件夹,并拷贝了AA.txt到CC文件夹

或者

在写命令时在CC后添加斜线,xcopy E:\AA\AA.txt D:\练习\CC\,就不会出现是文件名还是目录名的提示

xcopy会认为它是一个目录,因为如果CC是文件,那么后面不会再有下级目录,也就不能有斜线

或者

源文件名写成通配符*或.并且加参数 /i

xcopy /i E:\AA\* D:\练习\CC

---------------------------------------------------------------------------------------------------------------------------

三、xcopy命令通配符的运用

拷贝文件时:

源文件和目标文件名都为通配符*

xcopy E:\AA\* D:\练习\*

执行结果,拷贝所有的文件(不包括子目录及里面的文件),最好不用通配符.,原因参见二中关于通配符的内容

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

源文件用通配符*,目标文件为空

xcopy E:\AA\* D:\练习或xcopy E:\AA\* D:\练习\

执行结果,拷贝所有的文件(不包括子目录及里面的文件)

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

拷贝文件夹时:

源是文件夹,目标是通配符*或.

xcopy E:\AA D:\练习\*或xcopy E:\AA D:\练习\.

执行结果,拷贝所有的文件(不包括子目录及里面的文件)

注意:

不能写成下面的命令,否则提示出错

xcopy E:\AA\ D:\练习\CC\

"无效路径

复制了 0 个文件"

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

---------------------------------------------------------------------------------------------------------------------------

四、xcopy参数的运用

参数 /i

源文件名写成通配符*或.并且加参数 /i

xcopy /i E:\AA\* D:\练习\CC

不会出现是文件名还是目录名提示,参见二中关于/i的内容

参数 /e

xcopy /e E:\AA\* D:\练习\CC\

xcopy /e E:\AA D:\练习\CC\

xcopy /e E:\AA\* D:\练习\AA\

xcopy /e E:\AA D:\练习\AA\

xcopy /e /i E:\AA D:\练习\AA

执行结果,拷贝所有的文件,包括子文件夹及里面的文件,也就是带目录结构拷贝

---------------------------------------------------------------------------------------------------------------------------

五、应用举例

1、把E:中的AA文件夹拷贝到D:\练习中,要求:D:\练习中出现AA文件夹,并且里面的内容包括目录结构都和E:中的AA文件夹一样

xcopy /e E:\AA D:\练习\AA\

xcopy /e /i E:\AA D:\练习\AA

2、有一份带有目录结构的文件名称列表,根据列表从C盘带目录结构拷贝文件到目标路径D:\练习\AA中

pe中的文件列表.txt,内容如下:

Windows\System32\config\SOFTWARE

Windows\System32\config\DEFAULT

for /f "delims=" %%a in ('type 文件夹列表.txt') do (echo f|xcopy /y /i /c /h /r c:\%%a D:\练习\AA\%%a)

发现没有,没有用参数 /e,也能带目录结构拷贝文件到目标路径,正是用了第一项中的原理,xcopy在拷贝时具有建立文件夹的功能

---------------------------------------------------------------------------------------------------------------------------