如何使用DOS命令将文件复制到可能不存在的目录结构中?如果该位置尚不存在,我需要能够强制创建指向目标文件位置的目录路径。
例如,此位置已经有一个file.txt:
C:\file.txt
我想复制到
C:\example\new\path\to\copy\of\file\file.txt
但是在这个时候
C:\example\
并且所有子目录可能存在也可能不存在。
基本上,我正在寻找“如有必要,复制并创建目标路径”命令。您会推荐什么是实现此目标的最佳方法?
如何使用DOS命令将文件复制到可能不存在的目录结构中?如果该位置尚不存在,我需要能够强制创建指向目标文件位置的目录路径。
例如,此位置已经有一个file.txt:
C:\file.txt
我想复制到
C:\example\new\path\to\copy\of\file\file.txt
但是在这个时候
C:\example\
并且所有子目录可能存在也可能不存在。
基本上,我正在寻找“如有必要,复制并创建目标路径”命令。您会推荐什么是实现此目标的最佳方法?
Answers:
是的,那是xcopy。外观如下:
xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt
XCOPY信息位于
您可能还希望研究Vista,Windows 7和Server 2008中XP资源工具包和标准中的ROBOCOPY。
robocopy . c:\example\new\path\to\copy\of\file file.txt
echo f |
与xcopy一起使用可自动回答此提示。
我尝试使用类似:
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”。
file.txt.bak
当然,只有目录中没有该选项时才有效。不过,这在某些情况下可能会起作用。
echo f |
,您不再需要尾随*
。
是否使用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
。我从有关如何使用的StackOverflow答案中了解了此技术move
。