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

Batch move files from different subfolder up one level respectively

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

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

更好的是可以删除不需要的 Subfolder01Subfolder02Subfolder03

如果可能的话,将 files1.isofiles2.isofiles3.iso 批量重命名为 FolderA.isoFolderB.iso、[=27] =]分别。

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

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(即不产生任何输出)。

  )
)

关闭循环。