2013-08-17 43 views
0

通過此代碼,每個子目錄中的所有文件都將向上移動一層,而不僅僅是最後一個子目錄中的文件。此外,放置bat文件的文件夾中的文件以及bat文件本身也會向上移動一層。這不是這個意圖。我只想移動最後一個子目錄中的文件。
有關信息,每個文件夾的最後子目錄也有不同的名稱。DOS批處理命令將最後一個子目錄中的所有文件移動到一個水平

for /r %%x in (*.*) do move "%%x" "%%x"/../.. 

後來,如果這應該工作,我也會刪除空的子目錄。但現在最大的問題是將文件上移一層。
作爲一個文件夾的例子:
我:

D:\FILMS 
------\Bikini Spring Break 
-------------\EPCSKGCWZCXDJEH 
---------------------------\DVD 
------------------------------\P2HBSB5.iso 
------------------------------\0001.jpg 
------------------------------\lees.txt 

我想:

D:\FILMS 
------\Bikini Spring Break 
-------------\EPCSKGCWZCXDJEH 
---------------------------\P2HBSB5.iso 
---------------------------\0001.jpg 
---------------------------\lees.txt 

最後,在結束它的意圖得到這樣的:

D:\FILMS\Bikini Spring Break\P2HBSB5.iso  --> and other files (".jpg", etc) 

D:\FILMS\Breaking the Girls (20122013) PAL\P2HBTG5.iso 

D:\FILMS\De marathon\MW93JLNPNH8PLLK.iso 

在這裏,所有子目錄都被刪除,所有文件都位於他自己的電影命名文件夾中。
因爲所有的電影文件夾都沒有子目錄相同數量,我認爲唯一的解決辦法是將所有文件從最後subirectory一個級別移動,看看哪些文件夾仍然有子目錄,然後將這些的在一個單獨的文件夾,所以我將能夠執行代碼,直到所有子目錄被刪除。

回答

1

在一些示例文件夾上對此進行測試。

我在這裏澄清,它不將文件移動一個級別,但將所有文件夾電影下到同一個文件夾中的電影。

IE:下d:\films\Bikini Spring Break包括子目錄的所有文件將被移動到d:\films\Bikini Spring Break\

d:\影片\比基尼春假\ P2HBSB5.iso
d:\影片\比基尼春假\ 0001.JPG
d:\影片\比基尼春假\ lees.txt

它會提示是否有文件具有相同的名稱。

應該將所有的文件每部電影文件夾下,到相應的文件夾中的電影,如果這些額外的文件夾爲空,也將其刪除。

@echo off 
pushd "d:\films" 
    for /f "delims=" %%a in (' dir /ad /b ') do (
     pushd "%%a" 
     for /r %%b in (*) do move /-y "%%b" . 
     for /f "delims=" %%c in (' dir /b /s /ad ^|sort /r') do rd "%%c" 2>nul 
     popd 
    ) 
popd 
+0

缺少一個點:'move'%% b「../-y'。 ;) – Endoro

+0

@Endoro不,它將所有文件移動到當前目錄。感謝您檢查它。 – foxidrive

+0

啊,好的。我想到了一個層次。但要移至當前文件夾,根本不需要點。 – Endoro

相關問題