如何将树形目录转换为单级目录

如何将树形目录转换为单级目录

这个问题可能会让人困惑,最好举几个例子。我有一个文件夹,里面有很多子目录,可能是多层级的。下面的结构显示了这个文件夹,每个文件夹都包含自己的文件。

mainFolder
|--a
|--|--ab
|--|--ac
|--|--ad
|--b
|--b
|--|-cd
|--d

以上是 mainFolder 的树结构。我正在尝试编写一个批处理文件,以便将整个树转换为单级结构。

--a
--ab
--ad
--b
--c
--cd
--d

以上是预期的输出。所有文件都应位于其自己的文件夹中。

setlocal EnableDelayedExpansion 

set "targetPath=%~dp0mainFolder"

for /r "%targetPath%" %%i in (.) do (

     echo %%i

)

pause

这是我当前的代码,它能够循环并显示目录的绝对路径

答案1

存在不一致:源中--c缺少目标中没有--ac

源树:

> tree
└───mainFolder
    ├───a
    │   ├───ab
    │   ├───ac
    │   └───ad
    ├───b
    ├───c
    │   └───cd
    └───d

假设主文件夹位于驱动器的根目录中,则此单个命令行:

@for /r "\mainfolder" %A in (.) do @for /f "tokens=5 delims=\" %B in ("%A") do @move "%A" "\mainFolder"

将产生此目标树:

> tree
└───mainFolder
    ├───a
    ├───ab
    ├───ac
    ├───ad
    ├───b
    ├───c
    ├───cd
    └───d

如果不是,请将 tokens 值从 5 调整为与 dirlevel 匹配。
在批处理文件中,将所有百分号加倍%%

相关内容