2011-08-31 29 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 
相關問題