2014-01-21 136 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 
相关问题