我正在编写一个执行副本的批处理脚本。我想编写脚本来复制整个文件夹。当我想复制一个文件时,我这样做
copy %~dp0file.txt file.txt
如果我有一个具有此结构的文件夹,是否有一个命令可以同时复制整个文件夹及其内容,同时保留确切的结构。
mainfolder/
file1.txt
file2.txt
insidefolder/
file3.txt
file4.txt
file5.txt
答案 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 有几个优点:
更多详情here。
答案 2 :(得分:5)
我怀疑xcopy
命令是你正在寻找的神奇子弹。
它可以复制文件,目录甚至整个驱动器,同时保留原始目录层次结构。与基本copy
命令相比,还有一些其他选项可用。
如果您的批处理文件只需要在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