robocopy 将文件复制到当前文件夹中的新文件夹中,无需新建文件夹

robocopy copy files to a new folder in the current folder without the new created folder

我想将整个文件夹复制到一个新的子文件夹中。目前我正在使用:

(robocopy "C:/Test" "C:/Test/a" /E> output.log)  ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0

在 运行 之后,"C:/Test/a" 中还有“/a”文件夹。我不想要那个新文件夹。

当要复制完整的源目录树并且目标目录位于源目录树中的某处时,robocopy 命令似乎会混淆。因此,您的命令行会生成一个目录 C:\Test\a\a,其中部分包含来自源代码的内容。

尝试使用 /L 选项(不复制但列出将被复制的项目),以便输出日志准确显示您所期望的内容。一旦您真正进行了复制(因此删除了 /L),日志中就会出乎意料地列出更多项目。此行为表明 robocopy 不会提前评估整个源目录树,而是在实际复制操作期间评估。

避免这种情况的最简单方法是将目标目录排除在(重新)复制之外:

robocopy "C:\Test" "C:\Test\a" /E /XD "C:\Test\a"

顺便说一下,正确的 Windows 路径分隔符是 \。尽管 robocopy 也接受 /,但您应该坚持使用 \,因为许多命令确实会误解 /.