批处理:将所有文件从多个子文件夹(相同名称)移动到父文件夹中

时间:2018-07-25 10:50:30

标签: batch-file

我刚开始使用批处理文件,遇到了一个问题。 我需要将所有文件从具有相同名称(旧)的多个文件夹移至父文件夹。 如果我仅对1个文件夹执行此操作,则效果很好,但我不知道如何同时对多个文件夹执行此操作。我将不胜感激。这是我的文件夹结构:

  • 文件夹\ 1 \ old \ somefiles =>文件夹\ 1 \ somefiles
  • 文件夹\ 2 \ old \ somefiles =>文件夹\ 2 \ somefiles
  • 文件夹\ 3 \ old \ somefiles =>文件夹\ 3 \ somefiles

这是我在一个文件夹中的代码:

for %%F in ( c:\test\folder\120006\old\*.*) do move /Y %%F c:\test\folder\120006

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

在cmd行上使用:

 for /r X:\Folder /d %F in (old.?) do @move "%F\*" "%~dpF"

在批处理文件中:

@Echo off
for /r X:\Folder /d %%F in (old.?) do move "%%F\*" "%%~dpF"

我的ramdrive上的样本树:

> tree /F
Auflistung der Ordnerpfade für Volume RamDisk
└───Folder
    ├───1
    │   └───old
    │           somefiles
    ├───2
    │   └───old
    │           somefiles
    └───3
        └───old
                somefiles

运行命令后:

> tree /f
Auflistung der Ordnerpfade für Volume RamDisk
└───Folder
    ├───1
    │   │   somefiles
    │   └───old
    ├───2
    │   │   somefiles
    │   └───old
    └───3
        │   somefiles
        └───old

如果在OLD下的树中还有 个其他名为Folder的文件夹,它们的文件应该向上移动了-使用aschipl的解决方案,否则喜欢更简单的解决方案。

答案 1 :(得分:0)

由于似乎要处理的文件以及不断变化的目录始终在相同的目录层次结构级别上,因此以下代码应该可以完成您期望的工作:

rem // Iterate over the changing directories:
for /D %%D in ("C:\test\folder\*") do (
    rem // Iterate over the files to process:
    for %%F in ("%%~D\old\*.*") do (
        rem // Actually move the files one level up:
        move /Y "%%~F" "%%~dpF.."
    )
)

除非确实需要,否则我不会使用递归(for /R)。