复制文件和目录树。 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] [/B] [/J] [/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 在可重新启动模式下复制网络文件。 /B 复制符号链接本身与链接目标。 /J 复制时不使用缓冲的 I/O。推荐复制大文件时使用。 开关 /Y 可以预先在 COPYCMD 环境变量中设置。 这可能被命令行上的 /-Y 覆盖。
例子:
XCOPY E:vstsworkspacesourceweb esource C:homesiteweb /s /e /h /r /k /y /d /exclude:exclude.txt>tempTips.txt
上面命令实现:
1、把C:homesiteweb 下的文件增量复制到E:vstsworkspacesourceweb esource
2、并且是剔除exclude.txt的。
3、把复制的文件名都写到tempTips.txt文件中
例如:
要将d:xly下所有文件备份到e:xly1,可以使用如下命令:
xcopy d:xly*.*/s/h e:xly1
又比如,要恢复e:xly1下2006年6月1日以后的文件至D:xly,就可使用如下命令:
xcopy e:xly1*.*/s/h/d:2006-06-01 d:xly
出处:https://www.cnblogs.com/pachongshangdexuebi/p/5051977.html
=======================================================================
--注释:从c:websites拷贝到c:copy目录(注c:copy则不会提示是目录还是文件)排除c:Exclude.txt中的 xcopy c:websites c:copy /s /e /y /EXCLUDE:c:Exclude.txt --注释:不包含以.obj 、 .sdf 、 .pdb 、 .rar 、.config 、结尾的文件,也不包含Common.js文件 --c:Exclude.txt .obj .sdf .pdb .rar .config Common.js
@ECHO OFF echo '开始拷贝文件夹及文件?按任意键继续' pause xcopy c:websites c:copy /s /e /y /EXCLUDE:c:Exclude.txt pause
出处:https://blog.csdn.net/smartsmile2012/article/details/78123534
=======================================================================
常见问题:
xcopy在执行的时候,有时总是询问是文件名还是目录名
例如:我需要运行类似
xcopy /y a.xml .pics.xml
很多次,但xcopy总是问我“文件名还是目录名”
可以这样通过管道来做
echo f | xcopy /y a.xml .pics.xml
==============================================
我自己写了项目的备份脚本:
echo off set sour=D:\_johnLocalSvnTestSVNTestProject set dest=\192.168.1.50ShareCares-bak20190519 set para= /e /s /y /h /r /exclude:c:exclude.txt set dir=Camera,PVG.Lib,TestCache,TestConfig,TestDesignPattern,TestEntityFramework,TestHook,TestLog4net,TestSqliteAndLog4net,TestThread,TestTypeAndReflection,TestVideo set xcopyLog=c:xcopy.log echo xcopy log > %xcopyLog% for %%i in (%dir%) do ( echo xcopy %sour%%%i to %dest%%%i echo xcopy %sour%%%i to %dest%%%i >> %xcopyLog% xcopy %sour%%%i %dest%%%i %para% >> %xcopyLog% ) set sour=D:\_johnLocalSvnTestSVN runk set dir=AutoUpdate,PVG_DownloadFiles,TestIBM.MQ,WarningAlert for %%i in (%dir%) do ( echo xcopy %sour%%%i to %dest%%%i echo xcopy %sour%%%i to %dest%%%i >> %xcopyLog% xcopy %sour%%%i %dest%%%i %para% >> %xcopyLog% ) rem 复制零散的单个目录或文件 echo 复制零散的单个目录或文件 echo 复制零散的单个目录或文件 >> %xcopyLog% echo d | xcopy "E:Bat脚本" "%dest%Bat脚本" %para% >> %xcopyLog% echo f | xcopy "D:\_johnLocalSvnDownloadProjectOAUS源码.rar" "%dest%OAUS源码.rar" %para% >> %xcopyLog% echo 复制完成,请查看执行的日志文件:%xcopyLog%
pause
增加双引号防止路径中有空格,其中c:exclude.txt的内容如下:
packages .vs obj in
这里的代码很简单,你应该能看懂,我就不解释了
==========================================