Windows 命令行:将所有子文件夹的内容移动到父文件夹

Windows 命令行:将所有子文件夹的内容移动到父文件夹

任务:

Folder1>Subfolder1>Stuff1
Folder1>Subfolder2>Stuff2
...

将子文件夹内容移动到父文件夹(Stuff1/2 是包含其他文件或子目录的子目录)

Folder1>Subfolder1
Folder1>Subfolder2
Folder1>Stuff1
Folder1>Stuff2

我试过:

for /d %f in (.\*) do (
pushd %f
move .\%f\* ..
popd
)

但那没有用。

答案1

您无法move * ..对目录执行 。移动目录的唯一方法move是指定目录名称本身(不允许使用通配符)。因此,您需要第二个循环(在第一个循环内)来循环遍历目录:

@echo off
for /d %%d in ("*") do (
  for /d %%e in ("%%d\*") do (
    move "%%e" .
  )
)

不需要,pushd因为您可以将其从父级移动到父级。

注意:这是用于批处理文件,因此的%d是和 的%两倍。如果直接从提示符运行它,则只需要一个。%%d%%e%

编辑:
如果第一级子文件夹(Subfolder1 和 Subfolder2)也包含文件(除了文件夹 Stuff1 和 Stuff2),您可以向外部添加另一个移动。

@echo off
for /d %%d in ("*") do (
  for /d %%e in ("%%d\*") do (
    move "%%e" .
  )
  move "%%d\*" .
)

答案2

尝试在命令提示符中使用 xcopy。您可以在此处阅读有关 xcopy 的更多信息:复制 Xcopy 可以一次性复制文件夹、子文件夹和文件。如果您想多次使用,可以编写一个小的批处理文件来自动执行该过程。

相关内容