DOS下如何将文件复制到某个目录下,并根据需要创建目录?

nod*_*key 45 windows cmd.exe

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

比如这个位置已经有一个file.txt:

C:\file.txt
Run Code Online (Sandbox Code Playgroud)

我想把它复制到

C:\example\new\path\to\copy\of\file\file.txt
Run Code Online (Sandbox Code Playgroud)

但此时

C:\example\
Run Code Online (Sandbox Code Playgroud)

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

基本上,我正在寻找“必要时复制并创建目标路径”命令。你会推荐什么是实现这一目标的最佳方法?

b w*_*b w 36

是的,那是xcopy。这是它的样子:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt
Run Code Online (Sandbox Code Playgroud)

XCOPY 信息位于

您可能还想查看XP 资源工具包和 Vista、Windows 7 和 Server 2008 标准中的ROBOCOPY

robocopy . c:\example\new\path\to\copy\of\file file.txt
Run Code Online (Sandbox Code Playgroud)

  • 请参阅其他答案 - 使用前面的 `echo f | ` 使用 xcopy 自动回答此提示。 (4认同)
  • 如果您不需要重命名文件,则 xcopy 很好。如果你这样做了,不幸的是 xcopy 会问你目标是目录还是文件名,并且没有命令行开关来指定“它是一个文件”。 (3认同)

msb*_*msb 20

我尝试使用类似的东西:

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt
Run Code Online (Sandbox Code Playgroud)

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

/sf/ask/299831871/

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

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt*
Run Code Online (Sandbox Code Playgroud)

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

echo f | xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt
Run Code Online (Sandbox Code Playgroud)

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

  • 第二个文件名是多余的,以防它相同。只要目录中的斜杠存在,“xcopy file.txt c:\example\new\path\to\copy\of\file\”就会起作用(否则它会询问文件或目录是否意味着) . (2认同)