[Solved] Batch move files from different subfolder up one level respectively


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
  )
)

An explanation:

cd PARENT

Just make sure you’re in the root directory to work from so the rest works

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

This is a for loop, for every directory in the working directory it sets %%i to the directory name (e.g. FolderA), then does the following:

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

This is a nested for loop, for every directory in %%i (on first loop, FolderA) it sets %%j to the directory name (on first loop, FolderA\Subfolder01), then does the following:

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

Move everything whose name ends with .iso in %%j (FolderA\Subfolder01) to %%i (FolderA), and rename it to %%i.iso (FolderA.iso). If that works, remove the %%j directory. Redirect all output to nul (i.e. produce no output).

  )
)

Close off the loops.

11

solved Batch move files from different subfolder up one level respectively