在Windows批处理文件中,我试图将文件移动到目前可能不存在的目录。因为目录不在那里,当我移动时,我看到一个错误,如:
系统无法找到指定的路径
move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt
如果当前不存在,我如何轻松创建我想要移动的路径?例如,此处,目录111可能尚未存在于aaa下。我希望创建整个路径结构,然后移动文件 我原以为它只是为我创造了整条路径。
答案 0 :(得分:22)
尝试:
md c:\aaa\111\222\333\444 2> nul
移动命令之前。
md使目录递归,因此如果没有到444的父目录,它将继续按层次结构创建。 “2> nul”确保如果您已经拥有该目录,那么您的命令就不会出错。
答案 1 :(得分:15)
如果ROBOCOPY
是一个选项,它将创建文件夹结构(如果它不存在。
试试这个:
ROBOCOPY c:\aaa\bbb\ccc\ddd c:\aaa\111\222\333\444 mytext.txt /MOV
答案 2 :(得分:5)
if 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
答案 3 :(得分:3)
继续Aruns回答:
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
答案 4 :(得分:2)
假设您有以下目录结构。
C:\aaa\bbb\ccc\ddd
你想在aaa下创建一个名为111的目录,然后在111下创建222,然后在444下创建333,依此类推
Window的cmd允许您通过提供多级路径
来创建目录结构从而
md c:\aaa\111\222\333\444
将创建所有目录,直到444。
您可能需要先创建目录,然后执行移动
答案 5 :(得分:0)