使用CMD将文件从多个文件夹移动到父目录

时间:2019-07-18 12:47:41

标签: cmd command-line

我有一个文件夹Target包含多个文件夹

每个文件夹包含一个与该文件夹同名的文件

target folder

one of siblings folders

我要移动文件夹Part1Part2Part3Part4Part5中的文件

使用cmd到父文件夹(在这种情况下为“目标”),然后删除文件夹。

结果应该是这样的:

result

在Linux中,我可以使用mv Part*\*.* ..

我尝试了copy "Part*\*" ""命令, 但这不起作用。

2 个答案:

答案 0 :(得分:1)

使用For循环。在此代码中获取目录名称的关键是"dir /a:d",它仅列出目录。我将其放入%%a变量中。使用%~dp0引用批处理文件所在的目录。如果您的bat位于其他位置,请查找并全部替换为所需的目录路径。最后,使用RMDIR删除每个文件夹,并使用/q /s使其静音,并删除目录(part1 part2等...)和目录本身中的所有文件。

@echo off
for /f "tokens=* delims=" %%a in ('dir /a:d /b "%~dp0"') do (
        copy "%~dp0%%a\*.*" "%~dp0"
        RMDIR /q /s "%~dp0%%a"
        )

答案 1 :(得分:0)

在Windows命令提示符中,execSQL不起作用,因为wildcards仅在路径的最后一个元素中被允许,而在中间的某个地方被设置。

要解决此问题,请使用for /D loop来解析copy "Part*\*" ""中的通配符,然后让copy处理其余的通配符:

Part*

要移动文件而不是复制文件,只需将for /D %I in ("Part*") do @copy "%~I\*" ".." 替换为move。如果要删除空的子目录,请附加rd

copy

要在中使用以上代码片段,请确保将所有for /D %I in ("Part*") do @move "%~I\*" ".." & @rd "%~I" 符号加倍。