copy %~dp0file.txt file.txt
如果我有这样一个结构的文件夹,是否有一条命令可以一次性复制整个文件夹及其所有内容并保持完全相同的结构。
mainfolder/
file1.txt
file2.txt
insidefolder/
file3.txt
file4.txt
file5.txt
copy %~dp0file.txt file.txt
如果我有这样一个结构的文件夹,是否有一条命令可以一次性复制整个文件夹及其所有内容并保持完全相同的结构。
mainfolder/
file1.txt
file2.txt
insidefolder/
file3.txt
file4.txt
file5.txt
如果你有xcopy
,可以使用/E
参数,它将复制目录和子目录以及其中的文件,包括保留空目录的目录结构。
xcopy [source] [destination] /E
旧的方式:
xcopy [source] [destination] /E
xcopy已被弃用。Robocopy取代了Xcopy。它与Windows 8、8.1和10一起提供。
robocopy [source] [destination] /E
Robocopy 有几个优点:
更多细节请看这里。
robocopy /?
命令,它也支持该命令。 - duXingrobocopy
命令中使用 /MIR
参数。 - Jordan对于文件夹复制,您可以使用以下方法
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中安排任务,在特定时间自动执行此任务。
我对这个问题和相关问题很感兴趣。
为了回答这个问题,本周我进行了一些与XCOPY相关的实验。
为了帮助回答原始问题,我在此发布我的实验结果。
我在Windows 7 64位专业版SP1上进行了实验,并使用了操作系统自带的XCOPY副本。
为了进行实验,我使用了脚本语言Open Object Rexx和编辑器宏语言Kexx以及文本编辑器KEdit编写了一些代码。
XCOPY是从Rexx代码中调用的。 Kexx代码编辑了XCOPY的屏幕输出,以便关注关键结果。
这些实验都涉及使用XCOPY复制一个具有多个文件和子目录的目录。
实验包括10个案例。每个案例都调整了XCOPY的参数并调用了一次XCOPY。所有10个案例都试图执行相同的复制操作。
以下是主要结果:
(1)在10个案例中,只有三个进行了复制。另外7个案例立即在处理XCOPY参数时给出了错误消息,例如:
Invalid path
Access denied
没有复制任何文件。
在三个进行复制的案例中,它们都执行了相同的复制操作,也就是说,得到了相同的结果。
(2) 如果想要复制目录X以及目录X下所有的文件和子目录,那么显然XCOPY并不能做到这一点。这似乎也是最初的问题所在。
其中一个后果是,如果使用XCOPY复制目录X及其内容,则可以复制内容,但无法复制目录X本身;因此会失去目录X的时间日期戳、归档位、所有权数据、属性等信息。
当然,如果目录X是目录Y的子目录,则对目录Y进行XCOPY将复制目录Y的所有内容,包括目录X。因此可以得到目录X的副本。但是,目录X的副本将具有XCOPY运行时的时间日期戳,而不是原始目录X的时间日期戳。
这种时间戳的更改可能对带有许多下载网页的目录副本造成不便:Web页面的HTML文件将保留其原始时间戳,但是由HTML文件使用的文件的相应子目录将具有XCOPY运行的时间戳。因此,在按时间日期戳对副本进行排序时,所有子目录、HTML文件和相应的子目录(例如)都将被包括在内。x.htm
x_files
这句话的意思是,在时间和日期排序中,可能会出现很大的差距。
分层文件系统早在 1969 年 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
xcopy [源路径] [目标路径] /E /H /C /R /Q /Y
请使用xcopy /?
命令查看这些选项的含义。 - lucaferrarioxcopy
已经过时,当文件名超过 254 个字符时,会引发“内存不足”的错误。请使用robocopy
替代:robocopy C:\source D:\destination /COPYALL /E
。详见 https://en.wikipedia.org/wiki/Robocopy。 - Marco Demaio