将不同子文件夹中的文件分别批量上移一级

时间:2018-07-30 12:11:19

标签: batch-file batch-processing

我有数百个文件夹,其结构如下:

  • PARENT\FolderA\Subfolder01\files1.iso
  • PARENT\FolderB\Subfolder02\files2.iso
  • PARENT\FolderC\Subfolder03\files3.iso

我想将所有files1.isofiles2.isofiles3.iso分别上移一个级别。应该看起来像这样。

  • PARENT\FolderA\files1.iso
  • PARENT\FolderB\files2.iso
  • PARENT\FolderC\files3.iso

更好的方法是删除不需要的Subfolder01Subfolder02Subfolder03

如果可能的话,还可以将那些files1.isofiles2.isofiles3.iso重命名为FolderA.isoFolderB.isoFolderC.iso分别。

我真的不知道如何解决这个问题。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

cd PARENT
for /D %%i in (*) do (
  for /D %%j in (%%i\*) do (
    move "%%j\*" "%%i\%%i.iso" 2>&1>nul && rmdir "%%j" 2>&1>nul
  )
)

说明:

cd PARENT

只需确保您在根目录下即可正常工作,因此其余工作正常

for /D %%i in (*) do (

这是一个for循环,对于工作目录中的每个目录,它都将%% i设置为目录名称(例如FolderA),然后执行以下操作:

  for /D %%j in (%%i\*) do (

这是一个嵌套的for循环,对于%% i中的每个目录(在第一个循环中,FolderA),它将%% j设置为目录名(在第一个循环中,FolderA \ Subfolder01),然后执行以下操作:

    move "%%j\*.iso" "%%i\%%i.iso" 2>&1>nul && rmdir "%%j" 2>&1>nul

将名称在%% j(FolderA \ Subfolder01)中以.iso结尾的所有内容移动到%% i(FolderA),并将其重命名为%% i.iso(FolderA.iso)。如果可行,请删除%% j目录。将所有输出重定向到nul(即不产生任何输出)。

  )
)

关闭循环。