如何在 DOS 中将文件复制到目录,并在必要时创建目录?

如何在 DOS 中将文件复制到目录,并在必要时创建目录?

如何使用 DOS 命令将文件复制到可能尚不存在的目录结构中?如果目标文件位置尚不存在,我需要能够强制创建到目标文件位置的目录路径。

例如,此位置已有一个 file.txt:

C:\file.txt

我想将其复制到

C:\example\new\path\to\copy\of\file\file.txt

但此时

C:\example\

并且所有子目录可能存在,也可能不存在。

基本上,我正在寻找“复制并创建目标路径(如果需要)”命令。您推荐哪种最佳方法来实现此目的?

答案1

是的复制。它看起来如下:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

XCOPY 信息位于

你可能还想看看机器人复制,在 XP 资源工具包中以及 Vista、Windows 7 和 Server 2008 中的标准中。

robocopy . c:\example\new\path\to\copy\of\file file.txt

答案2

我尝试使用类似的东西:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

但它会询问我它是文件还是目录。由于我在一个包含 40000 个文件的批处理文件中使用了该命令,因此这不切实际。此解决方案仅部分解决了我的问题:它创建了目录结构,但需要用户交互。我在这里找到了问题的解决方案:

https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder

这基本上是在目标文件末尾添加一个“*”:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt*

编辑:正如@romkyns 所指出的,如果您的文件具有相同的名称以及其他内容(例如“file.txt.bak”),则可能会产生不良结果。在上面发布的同一线程中,另一个可行的解决方案是将“echo f”传输到您的命令:

echo f | xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

您应该将“f”替换为您的系统用于文件的任何字母,以防您使用另一种语言。

答案3

无论使用copyxCopy,为了避免 出现错误copy或 出现提示xCopy,请测试所需文件夹是否存在,并在必要时创建它:

if not exist "NewPath" MkDir "NewPath"
copy "[path\]file.ext" "NewPath[\NewFileName.ext]"

&&或者在一个命令行上组合这些命令:

if not exist "NewPath" MkDir "NewPath" && copy "[path\]file.ext" "NewPath[\NewFileName.ext]"

move可以用 代替来做同样的事情copy。我从堆栈溢出回答关于如何使用move

答案4

DOS,哇!无论如何你使用复制命令。

相关内容