Answers:
尝试XCOPY
与/E
开关一起使用。更多信息在这里。
多年以来,我不必从大脑中访问这些信息!
更新
该文件说,它会将源目录中的所有文件和子目录(意味着不会创建父目录),所以你必须创建test
在C:\test2
第一和再使用XCOPY
。
robocopy /CREATE /COPYALL /DCOPY:T src dst
仅复制文件夹和空文件,但保留所有时间戳和其他属性。
test
仍需要创建文件夹。
md test
然后使用就很xcopy
明显了。
copy
文件夹不创建新文件夹,然后在其中复制内容。
如果要创建备份脚本,请使用ROBOCOPY。xcopy已被弃用,并可能在不久的将来被淘汰。robocopy可以做xcopy可以做的一切。它也更加灵活和可靠。使用robocopy创建脚本将使它们过时。
使用robocopy轻松复制文件夹。robocopy命令替换了xcopy命令。它可以快速复制整个文件夹,而不必担心定义内容。例如,要将C:\ tools目录的所有内容复制到新文件夹D:\ backup \ tools,请输入以下内容:
robocopy C:\tools D:\backup\tools /e
/ e修饰符告诉robocopy包含所有子目录。这包括空文件夹。robocopy将自动复制隐藏文件和系统文件。如果目标位置不存在新目录,它将创建新目录。
镜像目录。镜像目录非常适合进行备份。robocopy的mirror选项会将所有内容从源复制到目标。然后它将删除源中不存在的任何目标。这样可以确保您的备份仅包含文件的最新版本。例如,要将C:\ Users \ My Documents镜像到D:\ backup \ My Documents,请输入以下内容:[4]
robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
此功能将保留原始文件的所有权限。
启用重新启动。您可能希望包括在复制过程中断开连接的情况下重新启动进程的功能。
robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
记录复制过程。robocopy允许您创建一个日志文件。这可以帮助您查明问题或生成复制内容的存档。
robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
/ log +修饰符将附加现有的日志文件,而不是覆盖它。如果您只想覆盖旧的日志文件,请使用/log:.txt。
XCOPY SourceDrive: DestinationDrive: /S /E
例如,如果您需要通过命令行或从xboot命令环境将E:
驱动器数据复制到H:
驱动器(外部硬盘驱动器)。
xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
如果最初的问题是我一直在寻找的答案,那么我(显然没有一个人)已经提出了明确的解决方案。
我正在寻找的是将测试目录复制到test2目录,而无需再次输入。就像是
xcopy /isvy c:\test d:\test2
d:\test2\test
复制之前的位置不存在,但复制之后的位置。这样可以节省第二次在目标路径中进行的错误键入测试。上面的命令会将所有文件和任何目录复制到test2中,但不会创建测试目录。
至今
xcopy /isvy c:\test d:\test2\test
这确实是我发现完成这项工作的唯一方法。同样,如果您遇到输入问题,则不能保证源目录和目标目录将匹配。
解决此问题的另一种方法是
set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%
这将在mydir
变量中设置目标目录,然后在源路径和目标路径中都使用该变量。如果您输入错误的变量,您将得到一个错误,或者目标目录可能%
在开头和结尾。
输入的时间更长,但获得错误名称的机会更少。他们将是值得注意的。
xcopy /ievy c:\test d:\test2\test
,它保持目录树的结构,并且set mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%
仅以1 &就足够了,因为设置值的结果总是成功的。
我遇到过类似的情况,我需要将许多文件夹(包括文件夹名称)复制到目标位置,希望此标记为已回答的问题会有所帮助,但实际上没有帮助。
首先,在某些情况下肯定有人需要此功能,当我不得不从C:\ Windows \ Assembly \ GAC_MSIL复制文件夹时,我遇到了这种情况。Windows资源管理器拒绝显示此文件夹,因此您必须使用命令提示符。
如果您熟悉GAC文件夹,您会知道文件夹名称很简单,如果您键入错误,很容易出错。
因此,事先创建目录实际上不是一个选择-除非您使用脚本-我最终使用了它,因为这是唯一的实际解决方案。
首先将要复制的文件夹转储到临时文件,这通常基于某种模式,例如
dir /B policy* > Folders.txt
然后循环转储中的条目并复制到目标。如果目标参数以反斜杠(\)结尾,则Xcopy将负责创建文件夹。
for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\
将这两个命令放入批处理文件中并运行。
现在,如果仅内置了xcopy或robocopy。
对于您的问题,我已经找到了一个功能性的替代答案。
首先,使用FORFILES
with /S
参数,可以访问其中的每个子目录C:\test
。
其次,通过/C
参数,可以启动带有本机变量的命令链,从而可以在目标位置创建相同的目录,然后使用两个条件结构将文件复制到其中。
第一个条件结构@isdir==TRUE
(确保使用大写字母)允许只从源获取目录,然后在目的地MKDIR [path]\@relpath
末尾创建目录。
最后,第二个命令确保仅使用来处理文件@isdir==FALSE
,然后COPY命令仅完成工作,通过FORFILES命令将所有文件设置[path]@relpath
为目标,以将文件复制到刚创建的目录中。
forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"
希望能对这里的所有人有所帮助。
这将通过GUI来完成,不知道他们是如何做到的。
“ ...小程序将允许您选择“从目录”和“进入目录”,它将仅复制目录结构。”