2011-08-31 28 views
13

在Windows批处理文件中,我试图将文件移动到当前可能不存在的目录。由于该目录是不存在的,当我做的举动我看到了如下的错误:Windows批处理移动到可能不存在的目录

该系统找不到指定的路径

move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt 

我怎么能轻松地创建,我想搬到如果路径它目前不存在?例如,在这里,目录111可能不存在于aaa之下。我想要创建整个路径结构,然后移动文件。
我曾想过,它只是为我创造整个路径,作为此举的一部分。

回答

18

尝试:

md c:\aaa\111\222\333\444 2> nul 

您的移动命令。

md使目录递归,所以如果没有父目录到444,它将继续创建分层结构。 “2> nul”确保如果你已经拥有目录,你的命令不会出错。

1

可以说你有以下目录结构。

C:\aaa\bbb\ccc\ddd

你想创建一个目录名为111的下方AAA,那么111下222,然后444下333等

窗口的CMD让你通过提供多层次的路径创建目录结构

从而 md c:\aaa\111\222\333\444将创建所有的目录,直到444

您可能需要先创建目录,然后执行移动

4
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 
12

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

试试这个:

ROBOCOPY c:\aaa\bbb\ccc\ddd c:\aaa\111\222\333\444 mytext.txt /MOV 
2

继续上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 
相关问题