2014-01-21 186 views
1

我有一個包含很多子文件夾,每一個不同的文件,在其中:批處理文件將所有子文件夾文件向上移動,然後刪除空的子文件夾?

C:/folder/subfolder1/file1.jpg, 
C:/folder/subfolder2/file2.jpg, 
C:/folder/subfolder3/file3.jpg, 
etc. 

我如何可以創建移動文件子文件夾中的文件夾的批處理文件,然後刪除空的子文件夾。

即。 bat文件運行後,文件夾結構應如下:

C:/folder/file1.jpg 
C:/folder/file2.jpg 
C:/folder/file3.jpg 
etc. 
+0

你的問題應該包括一些你已經試圖回答它的證據。請包括你已經嘗試過的任何東西。 – unclemeat

回答

6

試試這個

@echo off 
for /f "tokens=*" %%f in ('dir /a:-D /s /b') do move "%%f" . 
for /f "tokens=*" %%f in ('dir /a:D /s /b') do rd "%%f" 
+0

如何在存在名稱衝突的情況下自動重命名移動的文件?即文件1,文件1(1) – user2611836

+0

附加/ Y到移動命令 - 「移動/ Y」%% f「。」 – unclemeat

+0

重命名文件,而不是覆蓋。 :) – foxidrive

0

這將通過每個文件夾中%root%(C:\文件夾中)和內容複製到%root% -

@echo off 
set root=c:\folder 
for /f %%a in ('dir /b /ad %root%') do (
    for /f %%b in ('dir /b %root%\%%a') do move "%root%\%%a\%%b" "%root%\%%b" 
    rmdir "%root%\%%a" 
) 
+0

除非添加「tokens = *」選項,否則會錯過文件名爲 – rostok

+0

的空間文件正確。 @ rostok – unclemeat

0

我用它作爲批處理文件來移動當前文件夾中的子文件夾中的所有文件,然後刪除空文件夾。

rem Copy all files from subfolders in the current folder to the current folder. 
for /R %cd% %%G IN (*.*) DO move /Y "%%G" 
rem Move all directories into a temp folder in the current folder. 
for /D %%I in (*) do move /y %%I %cd%\temp 
rem Remove the temp folder including empty folders. 
rmdir /s/q %cd%\temp 
相關問題