这个问题可能会让人困惑,最好举几个例子。我有一个文件夹,里面有很多子目录,可能是多层级的。下面的结构显示了这个文件夹,每个文件夹都包含自己的文件。
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 匹配。
在批处理文件中,将所有百分号加倍%%