Windows批处理移动到可能不存在的目录

Geo*_*ndo 18 windows batch-file

在Windows批处理文件中,我试图将文件移动到目前可能不存在的目录.因为目录不存在,当我移动时,我看到如下错误:

该系统找不到指定的路径

move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt
Run Code Online (Sandbox Code Playgroud)

如果当前不存在,我怎样才能轻松创建我想要移动的路径?例如,此处,目录111可能尚未存在于aaa下.我希望创建整个路径结构,然后移动文件.
我原以为它只是为我创造了整个路径,作为此举的一部分.

Aru*_*run 23

尝试:

md c:\aaa\111\222\333\444 2> nul
Run Code Online (Sandbox Code Playgroud)

在移动命令之前.

md使目录递归,因此如果没有到444的父目录,它将继续按层次结构创建."2> nul"确保如果您已经拥有该目录,那么您的命令就不会出错.


aph*_*ria 18

如果ROBOCOPY是一个选项,它将创建文件夹结构(如果它不存在).

试试这个:

ROBOCOPY c:\aaa\bbb\ccc\ddd c:\aaa\111\222\333\444 mytext.txt /MOV
Run Code Online (Sandbox Code Playgroud)


Bal*_*i C 6

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
Run Code Online (Sandbox Code Playgroud)


joh*_*ohv 5

继续阿伦斯的回答:

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
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为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
Run Code Online (Sandbox Code Playgroud)