在Windows批处理文件中,我试图将一个文件移动到可能不存在的目录中。由于目录不存在,当我执行移动操作时,会出现以下错误:
系统找不到指定的路径
move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt
如果路径不存在,我该如何轻松地创建所需的路径呢?比如说,在 aaa 下可能还不存在 111 目录。 我希望整个路径结构都被创建出来,然后再移动文件。
我之前以为移动文件会自动创建整个路径。
在Windows批处理文件中,我试图将一个文件移动到可能不存在的目录中。由于目录不存在,当我执行移动操作时,会出现以下错误:
系统找不到指定的路径
move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt
如果路径不存在,我该如何轻松地创建所需的路径呢?比如说,在 aaa 下可能还不存在 111 目录。 我希望整个路径结构都被创建出来,然后再移动文件。
我之前以为移动文件会自动创建整个路径。
尝试:
md c:\aaa\111\222\333\444 2> nul
在您的移动命令之前。
md递归地创建目录,因此如果没有父目录444,则将保持分层创建。 "2> nul"确保如果您已经拥有该目录,您的命令不会出错。
如果ROBOCOPY
是一种选项,它将在文件夹不存在的情况下创建文件夹结构。
尝试这个:
ROBOCOPY c:\aaa\bbb\ccc\ddd c:\aaa\111\222\333\444 mytext.txt /MOV
ROBOCOPY
不可用的情况?它不稳定或者有什么问题吗? - 123iamkingROBOCOPY
。 - aphoriahelp RoboCopy
)中提到,/mov
和/move
通过“复制后从源删除”来工作。在同一驱动器上进行移动不应该需要复制和删除,而只需更改操作系统中文件位置显示的数据即可。因此,如果所有移动都在同一驱动器上,则最好使用命令move
。请更有经验的人说一下这是否正确。 - NewSitesif not exist c:\aaa\111\222\333\444 md c:\aaa\111\222\333\444
Move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt
&&
将这两个命令放在一条命令行上进行组合:if not exist "NewPath" MkDir "NewPath" && move "[path\]file.ext" "NewPath[\NewFileName.ext]"
。 - NewSitescopy
来代替笨拙的解决方法 echo f | xCopy ...
。请参阅 https://superuser.com/questions/119263/how-to-copy-a-file-to-a-directory-in-dos-and-create-directories-if-necessary#1477168。 - NewSites继续阅读Arun的回答:
md c:\aaa\111\222\333\444\mytext.txt
rd c:\aaa\111\222\333\444\mytext.txt
move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt
mytext.txt
的文件夹及其父文件夹,然后删除该文件夹,但不会删除其父文件夹。call :move_md "c:\aaa\bbb\ccc\ddd\myfile.txt" "c:\aaa\111\222\333\444\mytext.txt"
call :move_md "c:\aaa\bbb\ccc\ddd\myfile1.txt" "c:\aaa\111\222\333\444\mytext4.txt"
call :move_md "c:\aaa\bbb\ccc\ddd\myfile2.txt" "c:\aaa\111\222\333\444\mytext5.txt"
call :move_md "c:\aaa\bbb\ccc\ddd\myfile3.txt" "c:\aaa\111\222\333\444\mytext6.txt"
goto :eof
:move_md
md %2
rd %2
move %1 %2
goto :eof