0

使用此代码,每个子目录中的所有文件都将向上移动一级,而不仅仅是最后一个子目录中的文件。此外,放置 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

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

4

1 回答 1

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
于 2013-08-17T14:00:06.297 回答