![Windows 命令行:将所有子文件夹的内容移动到父文件夹](https://linux22.com/image/1385400/Windows%20%E5%91%BD%E4%BB%A4%E8%A1%8C%EF%BC%9A%E5%B0%86%E6%89%80%E6%9C%89%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E5%86%85%E5%AE%B9%E7%A7%BB%E5%8A%A8%E5%88%B0%E7%88%B6%E6%96%87%E4%BB%B6%E5%A4%B9.png)
任务:
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 可以一次性复制文件夹、子文件夹和文件。如果您想多次使用,可以编写一个小的批处理文件来自动执行该过程。