如何在 Windows 中展平目录?

如何在 Windows 中展平目录?

我知道 for 循环例如

for /r %f in (*) do @move %f .

for /r %f in (.) do @move %f .

但我似乎找不到适合我的情况的代码。假设我有许多如下所示的目录:

Folder 1 
  Folder 2
    File 1
    File 2
    File 3
    Folder 3
      File 4
Folder 4 
  Folder 5
    File 5
    File 6
    File 7
    Folder 6
      File 8

我想将文件 4 放入文件夹 2,将文件 8 放入文件夹 5,依此类推,我该怎么做?对于这种情况,我有不少目录看起来像这样,因此手动进入每个目录是行不通的。最简单的解决方案是什么,最好使用批处理?最终结果希望如下所示:

Folder 1
  Folder 2
    File 1
    File 2
    File 3
    File 4
Folder 4
  Folder 5
    File 5
    File 6
    File 7
    File 8

答案1

这组命令应该将目录中的所有文件放入顶级目录 - 因此文件夹 1 下的所有文件将直接放入文件夹 1 中,文件夹 4 下的所有文件将直接放入文件夹 4 中。

您需要对其进行修改才能获得问题中描述的确切设置,但希望这是一个好的开始。另外,我对批处理脚本还比较陌生,所以在尝试对真实数据进行任何操作之前,先针对一些不重要的临时目录和文件进行测试

dir /ad /b *your current directory* > dirs.txt
for /F "eol=" %i in (dirs.txt) do @echo dir /a-d /b /s %i ^> %i.txt >> script.bat
.\script.bat
for /F "eol=" %j in (dirs.txt) do for /F "eol=" %i in (%j.txt) do @move %i %j

归功于这个问题解释如何递归列出文件和这个问题解释如何在文本文件中使用 for 循环。

相关内容