如何使用 DOS 命令将文件复制到可能尚不存在的目录结构中?如果目标文件位置尚不存在,我需要能够强制创建到目标文件位置的目录路径。
例如,此位置已有一个 file.txt:
C:\file.txt
我想将其复制到
C:\example\new\path\to\copy\of\file\file.txt
但此时
C:\example\
并且所有子目录可能存在,也可能不存在。
基本上,我正在寻找“复制并创建目标路径(如果需要)”命令。您推荐哪种最佳方法来实现此目的?
答案1
答案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
无论使用copy
或xCopy
,为了避免 出现错误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,哇!无论如何你使用复制命令。