【Windows】命令行拷贝文件

参考

Windows copy命令

windows下批量拷贝目录下所有文件夹中的指定文件

永不过时的 XCOPY命令

xcopy 复制目录及子目录

Windows通过xcopy定时任务备份文件夹

windows下使用RoboCopy命令进行文件夹增量备份

使用ROBOCOPY定时增量备份文件

Robocopy(Windows可靠文件复制命令)详解

在Windows 10/8/7中使用Robocopy命令实时同步文件夹

robocopy复制文件_Windows Robocopy命令教程以及以安全方式复制文件的示例

robocopy使用详解

ROBOCOPY命令执行增量备份

背景:

sharepoint文件备份,只能拷贝到本地文件;但公司的Rstudio只能访问Z-drive文件。所以需要定期将数据拷贝到Z盘;

通过help命令可知,目前dos里面有三种文件拷贝命令

  • COPY 将至少一个文件复制到另一个位置。

  • XCOPY 复制文件和目录树。

  • ROBOCOPY 复制文件和目录树的高级实用工具

1.Copy 拷贝

C:\Users\kai.cao>help copy
将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
     [+ source [/A | /B] [+ ...]] [destination [/A | /B]]

  source       指定要复制的文件。
  /A           表示一个 ASCII 文本文件。
  /B           表示一个二进位文件。
  /D           允许解密要创建的目标文件
  destination  为新文件指定目录和/或文件名。
  /V           验证新文件写入是否正确。
  /N           复制带有非 8dot3 名称的文件时,
               尽可能使用短文件名。
  /Y           不使用确认是否要覆盖现有目标文件
               的提示。
  /-Y          使用确认是否要覆盖现有目标文件
               的提示。
  /Z           用可重新启动模式复制已联网的文件。
  /L           如果源是符号链接,请将链接复制
               到目标而不是源链接指向的实际文件。

命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
这可能会被命令行上的 /-Y 替代。除非 COPY
命令是在一个批处理脚本中执行的,默认值应为
在覆盖时进行提示。

要附加文件,请为目标指定一个文件,为源指定
数个文件(用通配符或 file1+file2+file3 格式)。

使用说明:

(1)COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化;

(2)复制过程中,目标盘上相同文件名称的旧文件会被源文件取代;

(3)复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够;

(4)文件名中允许使用通配举“*”“?”,可同时复制多个文件;

(5)COPY命令中源文件名必须指出,不可以省略。

(6)复制时,目标文件名可以与源文件名相同,称作“同名拷贝”此时目标文件名可以省略;

(7)复制时,目标文件名也可以与源文件名不相同,称作“异名拷贝”,此时,目标文件名不能省略;

(8)复制时,还可以将几个文件合并为一个文件,称为“合并拷贝”,格式如下:COPY;[源盘][路径]〈源文件名1〉〈源文件名2〉…[目标盘][路径]〈目标文件名〉;

(9)利用COPY命令,还可以从键盘上输入数据建立文件,格式如下:COPY CON [盘符:][路径]〈文件名〉;

(10)注意:COPY命令的使用格式,源文件名与目标文件名之间必须有空格!

Tips:

有时候路径中存在中文,无法使用识别,无法完成拷贝;

可以通过通配符先cd到特定目录,再使用copy;

img
## 示例1:
copy  E:\music\*陈奕迅*.*  E:\test


## 示例2: 出现空格,需要添加引号(本地)
C:\Users\kai.cao>copy "C:\Users\kai.cao\BeiGene\通信网站 - DSOE PM Docs\Global Study Tracker.xlsx" C:\Users\kai.cao\Downloads
覆盖 C:\Users\kai.cao\Downloads\Global Study Tracker.xlsx 吗? (Yes/No/All): yes
已复制         1 个文件。

## 示例3: 进入目录里面,不存在中文字符进行copy(AWS)
D:\Users\kai.cao\BeiGene\通信网站 - DSOE PM Docs>copy "Global Study Tracker.xlsx" Z:\bgcrh\build\training_project_1\practice_wh\cp\dev\pgm\R\kai_cao\PD_chekcs_grab
        1 file(s) copied.
        
## 示例4:如果路径存在中文字符,可以使用通配符;cd->copy
@echo off
::copy sharepoint file to z driver
cd /d D:\Users\kai.cao\BeiGene\*Docs
copy ".\Global Study Tracker.xlsx" Z:\bgcrh\build\training_project_1\practice_wh\cp\dev\pgm\R\kai_cao\PD_chekcs_grab

效果:

img

2.XCOPY学习

“Xcopy”是用cmd复制文件夹的一个命令,可以将文件,目录,甚至整个磁盘从一个位置复制到另一个位置。 它是“copy”命令的高级版,因为它可以指定源和目标。

2.1 命令参数:

XCOPY source [destination] [命令参数]

C:\Users\kai.cao>help xcopy
复制文件和目录树。

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 覆盖。

2.2 XCOPY命令举例说明

## 示例1:
rem 拷贝目录 /s /e /y 说明:在复制文件的同时也复制空目录或子目录,
::如果目标路径已经有相同文件了,使用覆盖方式而不进行提示
@echo off
Xcopy  C:\Users\lenovo_kcao\igv  C:\Users\lenovo_kcao\test

## 示例2:
例:将a文件夹内的所有内容(包括子文件夹)复制到b文件夹
xcopy a\* b /y /e /i /q

说明:
/y:不弹出“确认是否覆写已存在目标文件”的提示
/e:复制文件及子文件夹内所有内容,包括空文件夹(对比/s, /s不复制空文件夹)
/i:如果b不存在并且复制超过一个文件则默认b是目录名
/q:quiet,静默模式

## 示例3:中文符号,拷贝失败;
D:\Users\kai.cao>xcopy D:\Users\kai.cao\BeiGene\* Z:\bgcrh\build\training_project_1\practice_wh\cp\dev\pgm\R\kai_cao\PD_chekcs_grab /y /e /i /q
Unknown error.
Unable to create directory - Z:\bgcrh\build\training_project_1\practice_wh\cp\dev\pgm\R\kai_cao\PD_chekcs_grab\通信网站 - DSOE PM Docs
0 File(s) copied

## 示例4:cd->xcopy
::copy sharepoint file to z driver
cd /d D:\Users\kai.cao\BeiGene\*Docs
xcopy ".\Global Study Tracker.xlsx" Z:\bgcrh\build\training_project_1\practice_wh\cp\dev\pgm\R\kai_cao\PD_chekcs_grab

效果:

img

3.ROBOCOPY增量备份

RoboCopy,它是一个命令行的目录复制命令,可以支持多线程了,这就意味着可以大大提升复制速度。而且该功能可以创建两个文件结构完全的镜像副本而不复制任何不需要的重复文件,同时还允许您保留所有相关文件信息,包括日期和时间戳、安全访问控制列表(ACL))等等。

3.1 命令参数:

ROBOCOPY source destination [file [file]…] [options]

  • 源:源目录(驱动器:\路径或\服务器\共享\路径)

  • 目标:目标目录(驱动器:\路径或\服务器\共享\路径)

  • 文件:要复制的文件(名称/通配符: 默认为 ".")

复制选项

/S:复制子目录,但不复制空的子目录。
/E:复制子目录,包括空的子目录。
/LEV:n:仅复制源目录树的前 n 层。
/Z:在可重新启动模式下复制文件。
/B:在备份模式下复制文件。
/ZB:使用可重新启动模式;如果拒绝访问,请使用备份模式。
/EFSRAW:在 EFS RAW 模式下复制所有加密的文件。
/COPY:复制标记:: 要复制的文件内容(默认为 /COPY:DAT)。(复制标记: D=数据,A=属性,T=时间戳)。(S=安全=NTFS ACL,O=所有者信息,U=审核信息)。
/DCOPY:T:复制目录时间戳。
/SEC:复制具有安全性的文件(等同于 /COPY:DATS)。
/COPYALL:复制所有文件信息(等同于 /COPY:DATSOU)。
/NOCOPY:不复制任何文件信息(与 /PURGE 一起使用生效)。
/SECFIX:修复所有文件的文件安全性,即使是跳过的文件。
/TIMFIX:修复所有文件的文件时间,即使是跳过的文件。
/PURGE:删除源中不再存在的目标文件/目录。
/MIR:镜像目录树(等同于 /E 和 /PURGE)。
/MOV:移动文件(复制后从源中删除)。
/MOVE:移动文件和目录(复制后从源中删除)。
/A+:[RASHCNET]:将给定的属性添加到复制文件。
/A-:[RASHCNET]:从复制文件中删除给定的属性。
/CREATE:仅创建目录树和长度为零的文件。
/FAT:仅使用 8.3 FAT 文件名创建目标文件。
/256:关闭超长路径(> 256 字符)支持。
/MON:n:监视源;发现多于 n 个更改时再次运行。
/MOT:m:监视源;如果更改,在 m 分钟时间内再次运行。
/RH:hhmm-hhmm:运行小时数 – 可以启动新副本的时间。
/PF:以每个文件(而不是每个步骤)为基础检查运行小时数。
/IPG:n:程序包间的间距(ms),以释放低速线路上的带宽。
/SL:对照目标复制符号链接。
/MT[:n]:使用 n 个线程进行多线程复制(默认值为 8)。n 必须至少为 1,但不得大于 128。该选项与 /IPG 和 /EFSRAW 选项不兼容。使用 /LOG 选项重定向输出以便获得最佳性能。

文件选择选项

/A:仅复制具有存档属性集的文件。
/M:仅复制具有存档属性的文件并重置存档属性。
/IA:[RASHCNETO]:仅包含具有任意给定属性集的文件。
/XA:[RASHCNETO]:排除具有任意给定属性集的文件。
/XF 文件[文件]…:排除与给定名称/路径/通配符匹配的文件。
/XD 目录[目录]…:排除与给定名称/路径匹配的目录。
/XC:排除已更改的文件。
/XN:排除较新的文件。
/XO:排除较旧的文件。
/XX:排除多余的文件和目录。
/XL:排除孤立的文件和目录。
/IS:包含相同文件。
/IT:包含已调整的文件。
/MAX:n:最大的文件大小 – 排除大于 n 字节的文件。
/MIN:n:最小的文件大小 – 排除小于 n 字节的文件。
/MAXAGE:n:最长的文件存在时间 – 排除早于 n 天/日期的文件。
/MINAGE:n:最短的文件存在时间 – 排除晚于 n 天/日期的文件。
/MAXLAD:n:最大的最后访问日期 – 排除自 n 以来未使用的文件。
/MINLAD:n:最小的最后访问日期 – 排除自 n 以来使用的文件。(If n < 1900 then n = n days, else n = YYYYMMDD date)。
/XJ:排除接合点。(默认情况下通常包括)。
/FFT:假设 FAT 文件时间(2 秒粒度)。
/DST:弥补 1 小时的 DST 时间差。
/XJD:排除目录的接合点。
/XJF:排除文件的接合点。

重试选项

/R:n:失败副本的重试次数: 默认为 1 百万。
/W:n:两次重试间的等待时间: 默认为 30 秒。
/REG:将注册表中的 /R:n 和 /W:n 保存为默认设置。
/TBD:等待定义共享名称(重试错误 67)。

日志记录选项

/L:仅列出 – 不复制、添加时间戳或删除任何文件。
/X:报告所有多余的文件,而不只是选中的文件。
/V:生成详细输出,同时显示跳过的文件。
/TS:在输出中包含源文件的时间戳。
/FP:在输出中包含文件的完整路径名称。
/BYTES:以字节打印大小。
/NS:无大小 – 不记录文件大小。
/NC:无类别 – 不记录文件类别。
/NFL:无文件列表 – 不记录文件名。
/NDL:无目录列表 – 不记录目录名称。
/NP:无进度 – 不显示已复制的百分比。
/ETA:显示复制文件的预期到达时间。
/LOG:文件:将状态输出到日志文件(覆盖现有日志)。
/LOG+:文件:将状态输出到日志文件(附加到现有日志中)。
/UNILOG:文件:以 UNICODE 方式将状态输出到日志文件(覆盖现有日志)。
/UNILOG+:文件:以 UNICODE 方式将状态输出到日志文件(附加到现有日志中)。
/TEE:输出到控制台窗口和日志文件。
/NJH:没有作业标头。
/NJS:没有作业摘要。
/UNICODE:以 UNICODE 方式输出状态。

作业选项

/JOB:作业名称:从命名的作业文件中提取参数。
/SAVE:作业名称:将参数保存到命名的作业文件
/QUIT:处理命令行后退出(以查看参数)。
/NOSD:未指定源目录。
/NODD:未指定目标目录。
/IF:包含以下文件。

3.2 RoBoCopy命令举例说明

复制指定的文件夹

robocopy最基本操作是将源文件夹复制到目标位置。 在此示例中,我们将名为mytest的目录复制到目标文件夹yourtest

robocopy mytest yourtest

img

复制操作后, robocopy提供了一些统计信息

  • Start shows start time of copy operationStart显示复印操作的开始时间

  • Source shows source directorySource显示源目录

  • Dest shows destination directoryDest显示目的地目录

  • Files shows file filterFiles显示文件过滤器

  • Options shows given optionsOptions显示给定的选项

  • Total shows total files and folders countTotal显示文件和文件夹总数

  • Copied shows copied files and folders countCopied显示复制的文件和文件夹数

  • Skipped shows not copied files and foldersSkipped显示未复制的文件和文件夹

仅复制给定的文件类型或扩展名(Copy Only Given File Types or Extensions)

robocopy在复制文件时提供了一些过滤功能。 我们可以指定要复制的文件名和扩展名。 这将跳过其他文件名和扩展名。 我们将在目标文件夹之后提供文件名或扩展名。在此示例中,我们只想复制*.txt扩展名文件。从输出中我们可以看到仅复制了一个文件,但是有多个文件。 复制的文件名和字节数也会打印出来。

robocopy mytest yourtest *.txt

img

复制子文件夹 (Copy SubFolders)

默认情况下,仅将第一级目录复制到目标。 如果需要复制所有级别和子目录文件夹,则应启用/S

robocopy mytest yourtest /S

img

列出文件(List Files)

robocopy有一个非常有用的功能,其中的源文件不会被复制,而是被列出。 如果我们要检查现有文件和文件夹,则此功能很有用。 我们可以使用/L选项来打印文件和目录的列表。从输出中可以看到,所有文件和文件夹都被跳过而不复制。

robocopy mytest yourtest /L

img

递归列出文件 (List Files Recursively)

尽管robocopy主要用于将文件从远程复制到本地或本地删除,但我们可以使用/L和/S选项列出远程文件。 我们可以合并两个选项列表和递归列表所有级别的文件和文件夹。

robocopy mytest yourtest /L /S

复制小于给定大小的文件 (Copy Files Lower Than Given Size)

复制文件时,我们可以指定要复制的文件大小。 在此示例中,我们将复制那些大小小于1K 。 我们将使用/MAX选项。从结果中我们可以看到,由于大小限制,某些文件被复制了,但有些文件没有被复制。

robocopy mytest yourtest /S /MAX:1000

img

复制大于给定大小的文件 (Copy Files Higher Than Given Size)

上一个选项的相反是/MIN选项。 这只会复制大于给定大小的文件。 在此示例中,我们将复制大于1K(即1000 KB)的文件。

robocopy mytest yourtest /S /MIN:1000

img

移动文件(Move Files)

robocopy的默认行为是复制文件。 有时我们可能需要移动文件。 这也可以用robocopy完成。 我们将提供/MOV选项以移动文件和文件夹。

robocopy mytest yourtest /S /MOVE

记录作业 (Logging Operations)

在执行复制和移动操作时,我们还需要一些日志,尤其是在批量数据操作中。 我们可以使用/LOG选项编写有关指定操作的/LOG 。 我们还可以指定在/LOG选项末尾添加的日志文件名y。 在此示例中,我们将robocopy操作日志写入名为backup.log日志文件。 这将阻止常规输出

robocopy mytest yourtest /S /LOG:backup.log

type backup.log

img

欢迎评论交流~

你可能感兴趣的:(【Windows】命令行拷贝文件)