首页 > 解决方案 > 分别将不同子文件夹中的文件批量移动上一级

问题描述

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

我想将所有files1.iso, files2.iso,files3.iso分别上移一级。应该是这样的。

更好的是可以删除不需要的Subfolder01, 。Subfolder02Subfolder03

如果可能的话,还可以将这些files1.iso, files2.iso,分别批量重命名为,files3.iso的名称。FolderA.isoFolderB.isoFolderC.iso

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

标签: batch-filebatch-processing

解决方案


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

  )
)

关闭循环。


推荐阅读