DOS批处理命令将最后一个子目录中的所有文件向上移动一级

时间:2013-08-17 13:32:57

标签: batch-file directory subdirectory

使用此代码,每个子目录中的所有文件都将向上移动一级,而不仅仅是最后一个子目录中的文件。放置bat文件的文件夹中的文件以及bat文件本身也会向上移动一级。这不是意图。我只想从最后一个子目录中移动文件 有关信息,每个文件夹中的最后一个子目录也有不同的名称。

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

此处删除所有子目录,并且所有文件都在他自己的电影命名文件夹中 因为所有电影文件夹都没有相同数量的子目录,我认为唯一的解决方案是将所有文件从最后一个子目录向上移动一步,看看哪些文件夹仍然有子目录,并将这些文件放在一个单独的文件夹中,所以我将成为能够执行代码,直到删除所有子目录。

1 个答案:

答案 0 :(得分:1)

在一些示例文件夹上测试。

我在此澄清它不会将文件移动一级,而是将电影文件夹下的所有文件移动到同一个电影文件夹中。

IE:d:\films\Bikini Spring Break下包含子目录的所有文件都将移至d:\films\Bikini Spring Break\

d:\ films \ Bikini Spring Break \ P2HBSB5.iso
d:\ films \ Bikini Spring Break \ 0001.jpg
d:\ films \ Bikini Spring Break \ 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