将整个目录(包括目录文件夹)复制到另一个目录的命令行命令

81 windows command-line

使用命令行,我想将一个目录复制到另一个目录。例如有目录C:/testC:/test2.

我想复制C:/test进去C:/test2以便结果是C:/test2/test

到目前为止,我发现的所有内容只会将包含在 中的文件和文件夹复制C:/test到 中C:/test2,但会忽略父目录。

viv*_*vin 59

尝试XCOPY/E开关一起使用。更多信息在这里

我已经好多年没有从我的大脑中访问这些信息了!

更新

该文档说它从源目录复制所有文件和子目录(意味着未创建父目录),因此您必须先创建testinC:\test2然后使用XCOPY.

  • @IGRACH 我认为 `md test` 然后使用 `xcopy` 是显而易见的。 (3认同)
  • Xcopy 上的“/T”开关将执行不带任何文件的目录和子目录结构复制。 (2认同)
  • 更好地使用`robocopy /CREATE /COPYALL /DCOPY:T src dst` 只复制文件夹和空文件,但保留所有时间戳和其他属性。 (2认同)
  • 这实际上并没有为问题提供答案,因为仍然需要创建文件夹 `test`。 (2认同)

小智 38

xcopy c:\test c:\test2\test /s /e /h
Run Code Online (Sandbox Code Playgroud)

这是有关 XCOPY [ 1 , 2 ] 的信息

  • 如何停止让我输入“D”? (3认同)
  • @YumYumYum:您可以使用 /I 开关:“ /I 如果目标不存在并且复制多个文件,则假定目标必须是目录。” (3认同)

Pro*_*Rev 27

如果您要创建备份脚本,请使用 ROBOCOPY。xcopy 已被弃用,并且可能会在不久的将来逐步停止使用。robocopy 可以做 xcopy 可以做的一切。它也更加灵活和可靠。使用 robocopy 创建脚本将使它们面向未来。


  1. 使用 robocopy 轻松复制文件夹。robocopy 命令取代了 xcopy 命令。它可以快速复制整个文件夹,而不必担心定义内容。例如,要将 C:\tools 目录的所有内容复制到新文件夹 D:\backup\tools,请输入以下内容:

    robocopy C:\tools D:\backup\tools /e
    
    Run Code Online (Sandbox Code Playgroud)

    /e 修饰符告诉 robocopy 包含所有子目录。这包括空文件夹。robocopy 将自动复制隐藏文件和系统文件。如果目标位置不存在新目录,它将创建新目录。

  2. 镜像目录。镜像目录非常适合进行备份。robocopy 的 mirror 选项会将所有内容从源复制到目标。然后它将删除目标中不存在源的任何内容。这可确保您的备份仅包含最新版本的文件。例如,要将 C:\Users\My Documents 镜像到 D:\backup\My Documents,请输入以下内容:[4]

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    
    Run Code Online (Sandbox Code Playgroud)

    此功能将保留原始文件的所有权限。

  3. 启用重新启动。您可能希望包括重新启动进程的能力,以防连接在复制中间被切断。

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
    Run Code Online (Sandbox Code Playgroud)
  4. 记录复制过程。robocopy 允许您创建日志文件。这可以帮助您查明问题或生成已复制内容的存档。

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    
    Run Code Online (Sandbox Code Playgroud)

    /log+ 修饰符将附加现有的日志文件而不是覆盖它。如果您只想覆盖旧的日志文件,请使用 /log:.txt。


par*_*oid 9

我推荐robocopy 而不是xcopy,因为它有更多的选择,包括保持时间戳不变,我认为这是必不可少的。

Robocopy 需要在 XP/2003 上添加,但从 Vista 开始它是标准的。

我实际上通常使用xxcopy,但 64 位版本不是免费的。

  • @grawity:与他在现实世界中将 CMD 称为“DOS”的高概率相比,他实际使用 16 位 DOS 的可能性非常小。 (10认同)

小智 5

XCOPY SourceDrive: DestinationDrive: /S /E
Run Code Online (Sandbox Code Playgroud)

例如,如果您需要通过命令行或从 xboot 命令环境将E:驱动器数据复制到H:驱动器(外部硬盘驱动器)。

xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
Run Code Online (Sandbox Code Playgroud)

  • 存在 /E 时不需要 /S。http://www.windows-commandline.com/copy-directory-command-line/ (2认同)