批处理/批处理一次复制文件夹和内容

时间:2011-02-21 05:04:16

标签: windows batch-file copy directory

我正在编写一个执行副本的批处理脚本。我想编写脚本来复制整个文件夹。当我想复制一个文件时,我这样做

copy %~dp0file.txt file.txt 

如果我有一个具有此结构的文件夹,是否有一个命令可以同时复制整个文件夹及其内容,同时保留确切的结构。

mainfolder/
  file1.txt
  file2.txt
  insidefolder/
     file3.txt
     file4.txt 
     file5.txt

5 个答案:

答案 0 :(得分:49)

如果你有xcopy,你可以使用/E param,它将复制目录和子目录及其中的文件,包括维护空目录的目录结构

xcopy [source] [destination] /E

答案 1 :(得分:8)

旧方式:

xcopy [source] [destination] /E

xcopy 已弃用。 Robocopy取代了Xcopy。它配备了Windows 8,8.1和10。

robocopy [source] [destination] /E

robocopy 有几个优点:

  • 复制路径超过259个字符
  • 多线程复制

更多详情here

答案 2 :(得分:5)

我怀疑xcopy命令是你正在寻找的神奇子弹。

它可以复制文件,目录甚至整个驱动器,同时保留原始目录层次结构。与基本copy命令相比,还有一些其他选项可用。

查看documentation here

如果您的批处理文件只需要在Windows Vista或更高版本上运行,则可以使用robocopy代替xcopy,这是一个比{{1}}更强大的工具,现在已内置到操作系统中。它的文档可用here

答案 3 :(得分:0)

对于文件夹复制,您可以使用

robocopy C:\Source D:\Destination /E

用于文件复制

copy D:\Sourcefile.txt D:\backup\Destinationfile.txt /Y 

删除某个文件夹中的文件最后修改日期超过某一天

forfiles -p "D:\FolderPath" -s -m *.[Filetype eg-->.txt] -d -[Numberof dates] -c "cmd /c del @PATH"

你可以在Windows中使用Shedule任务在特定时间自动执行此任务。

答案 4 :(得分:0)

我对原版感兴趣 在这里和相关的问题。

一个答案,这周我做了一些 XCOPY进行实验。

为帮助回答原始问题,请点击此处 我发布了实验结果。

我在Windows 7 64位上进行了实验 带有XCOPY副本的Professional SP1 操作系统附带的。

为了进行实验,我在 脚本语言Open Object Rexx 和编辑器宏语言Kexx与 文本编辑器KEdit。

从Rexx代码中调用了

XCOPY。的 Kexx代码编辑了屏幕输出 XCOPY专注于关键结果。

所有实验都与使用 XCOPY复制一个目录和多个目录 文件和子目录。

实验包括10例。 每个案例都将参数调整为XCOPY 并曾经叫过XCOPY。全部10例 尝试进行相同的复制 操作。

主要结果如下:

(1)在10例中,只有3例 复制。马上有另外7例 只是从处理参数到 XCOPY,给出了错误消息,例如

Invalid path

Access denied

没有复制文件。

在完成复制的三个案例中, 所有人都进行了相同的复制,即 相同的结果。

(2)如果要复制目录X和所有 目录X中的文件和目录, 在分层文件系统树中 根目录X,然后显然 XCOPY-这似乎与 原始问题-只是不会做 那个。

一个结果是,如果使用XCOPY 复制目录X及其内容,然后 可以复制内容,但不能复制 目录X本身;因此,失去了 目录X上的时间日期戳 存档位,所有权数据, 属性等。

当然如果目录X是子目录 Y的目录,将复制Y的XCOPY 目录Y WITH的所有内容 目录X。因此可以通过这种方式获得副本 X的目录。但是, 目录X将带有其时间日期戳 XCOPY的运行时间,而非 原件的时间日期戳 目录X。

此时间戳更改可以是 尴尬的目录副本 许多下载的网页:HTML 该网页的文件将具有 原始时间日期戳,但 所用文件的对应子目录 通过HTML文件将具有时间日期 XCOPY运行的邮票。所以,当 全部按时间日期戳排序 子目录,HTML文件和 相应的子目录,例如

x.htm

x_files

在排序上可能显得相距甚远 时间日期。

分层文件系统可以追溯到 自1969年以来,IIRC在麻省理工学院(MIT)面向Multics 那么很多人已经意识到 给定目录X的两种情况,(i)复制 目录X及其所有内容,以及(ii) 复制X的所有内容,但不复制 目录X本身。好吧,如果只是从 在实验中,XCOPY仅做(ii)。

因此,以下10个案例的结果。 对于每种情况,结果中的第一个 三行具有前三个参数 到XCOPY。所以,第一行有树 要复制的目录的名称, '资源';第二行有树 获取副本的目录名称, “目的地”,第三行有 XCOPY的选项。剩下的1-2 行具有运行的结果 XCOPY。

关于选项的重要一点是 / X和/ O选项产生结果

Access denied

要对此进行比较,将案例8与其他案例进行比较 相同的案例,没有/ X 和/ O,但确实复制了。

这些实验让我更好 了解XCOPY并提供答案 原来的问题。

======= case 1 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_1\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 2 ==================
"k:\software\dir_time-date\*"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_2\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 3 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_3\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 4 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_4\"
options = /E /F /G /H /K /R /V /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 5 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_5\"
options = /E /F /G /H /K /O /R /S /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 6 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_6\"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 7 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_7"
options = /E /F /G /H /I /K /R /S /Y
Result:  20 File(s) copied
======= case 8 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_8"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 9 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_9"
options = /I /S
Result:  20 File(s) copied
======= case 10 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_10"
options = /E /I /S
Result:  20 File(s) copied