HKC / windows · 2024年 5月 23日 0

xcopy Windows下使用cmd命令将A文件夹copy到B文件夹

Xcopy是什么?

Xcopy是copy的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件;

1.使用时源盘符、源目标路径名、源文件名至少指定一个;
2.选用/S时对源目录下及其子目录下的所有文件进行COPY。
3.除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录;
4.选用/V参数时,对的拷贝的扇区都进行较验,但速度会降低。

语法

Xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]

参数

C:\Users\sunfeng>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]...] [/COMPRESS]

  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。推荐复制大文件时使用。
  /COMPRESS    如果适用,在传输期间请求网络
               压缩。

开关 /Y 可以预先在 COPYCMD 环境变量中设置。
这可能被命令行上的 /-Y 覆盖。

注解

  • 使用 /z

    如果在复制阶段断开连接(例如,如果服务器脱机,则会断开连接),在重新建立连接后,复制将会恢复。 /z 还显示针对每个文件执行的复制操作的完成百分比。

  • 在 COPYCMD 环境变量中使用 /y。

    可以在 COPYCMD 环境变量中使用 /y。 可以在命令行中使用 /-y 来替代此命令。 默认会提示你是否要覆盖。

  • 复制加密的文件

    将加密的文件复制到不支持 EFS 的卷会导致错误。 首先解密文件,或者将文件复制到支持 EFS 的卷。

  • 追加文件

    若要追加文件,请为目标指定单个文件,但为源指定多个文件(即,使用通配符或 file1+file2+file3 格式)。

  • 目标的默认值

    如果省略目标,xcopy 命令会将文件复制到当前目录。

  • 指定目标是文件还是目录

    如果目标不包含现有目录且不以反斜杠 (\) 结尾,则会显示以下消息:

    Does <Destination> specify a file name or directory name on the target(F = file, D = directory)?
    

    如果你想要将一个或多个文件复制到某个文件,请按 F。 如果你想要将一个或多个文件复制到某个目录,请按 D。

    可以使用 /i 命令行选项禁止此消息,这样,如果源是多个文件或目录,则 xcopy 假设目标是目录。

  • 使用 xcopy 命令设置目标文件的存档属性

    xcopy 命令创建设置了存档属性的文件,无论该属性是否已在源文件中设置。

  • 比较 xcopy 和 diskcopy

    如果磁盘在子目录中包含文件,而你想要将此磁盘复制到使用不同格式的磁盘,请使用 xcopy 命令而不是 diskcopy。 由于 diskcopy 命令逐磁道复制磁盘,因此源磁盘和目标磁盘必须使用相同的格式。 xcopy 命令没有这种要求。 除非需要复制完整磁盘映像,否则请使用 xcopy

  • 内存不足错误

    如果运行 xcopy 复制文件名路径大于 255 个字符的文件或文件夹,则可能会出现“内存不足”错误。

  • xcopy 的退出代码

    若要处理 xcopy 返回的退出代码,请在批处理程序的 if 命令行中使用 ErrorLevel 参数。

    下表列出了每个退出代码和描述。

退出代码 说明
0 文件已复制且未出错。
1 找不到要复制的文件。
2 用户已按下 CTRL+C 终止了 xcopy
4 发生了初始化错误。

内存或磁盘空间不足,

或者你在命令行中输入了无效的驱动器名称或无效语法。

5 发生了磁盘写入错误。

示例:

1. 若要将驱动器 A 中的所有文件和子目录(包括所有空子目录)复制到驱动器 B,请键入:

xcopy a: b: /s /e

2. 若要在以上示例中包括所有系统文件或隐藏文件,请添加 /h 命令行选项,如下所示:

xcopy a: b: /s /e /h

3. 若要使用 \Rawdata 目录中自 1993 年 12 月 29 日以来更改的文件更新 \Reports 目录中的文件,请键入:

xcopy \rawdata \reports /d:12-29-1993

4. 若要更新以上示例中 \Reports 中的所有文件(不考虑日期),请键入:

xcopy \rawdata \reports /u

5. 若要获取以上命令复制的文件的列表(即,不实际复制文件),请键入:

xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

文件 xcopy.out 列出了要复制的每个文件。

6. 若要将 \Customer 目录及其所有子目录复制到网络驱动器 H: 上的目录 \\Public\Address,保留只读属性,并在 H: 上创建新文件时得到提示,请键入:

xcopy \customer h:\public\address /s /e /k /p

7. 若要发出以上命令,确保 xcopy 创建 \Address 目录(如果不存在),并在创建新目录时禁止显示消息,请如下所示添加 /i 命令行选项:

xcopy \customer h:\public\address /s /e /k /p /i

8. 可以创建一个批处理程序来执行 xcopy 操作,并在发生错误时使用批处理 if 命令处理退出代码。 例如,以下批处理程序对 xcopy 源参数和目标参数使用可替换参数:

@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination
rem drive or directory (%2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit
:abort
echo You pressed CTRL+C to end the copy operation.
goto exit
:exit

若要使用上述批处理程序将 C:\Prgmcode 目录及其子目录中的所有文件复制到驱动器 B,请键入:

copyit c:\prgmcode b:

命令解释器将 %1 替换为 C:\Prgmcode,将 %2 替换为 B:,然后将 xcopy 与 /e 和 /s 命令行选项结合使用。 如果 xcopy 遇到错误,该批处理程序会读取退出代码并转到相应 IF ERRORLEVEL 语句中指示的标签,然后显示相应的消息并从批处理程序退出。

9. 此示例复制所有非空目录,以及在星号后带有关联文件扩展名的文件。

xcopy .\toc*.yml ..\..\Copy-To\ /S /Y

rem Output example.
rem  .\d1\toc.yml
rem  .\d1\d12\toc.yml
rem  .\d2\toc.yml
rem  3 File(s) copied

在以上示例中,此特定源参数值 .\toc*.yml 复制相同的 3 个文件,即使删除此参数的两个路径字符 .\。 但是,如果从源参数中删除星号通配符(使之成为 .\toc.yml),则不会复制任何文件。

 

赞赏

微信赞赏支付宝赞赏