以编程方式展平文件夹

Flattening folders programmatically

我有一个包含一组目录的文件夹。

我想遍历此根文件夹中的所有目录,如果这些目录包含文件夹,则将它们展平(即将它们全部放入原始目录,除非文件夹名为 "exception".

所以我有

>Root Folder
   >directory
     >subdirectory
      file1
     >subdirectory2
      file2
   >directory2
     >exception
      file3
   >directory3
     >subdirectory3
      file4

更改为(空行表示子目录已被删除):

Root Folder directory

     file1

     file2
   >directory2
     >exception
      file3
   >directory3

     file4

每个子目录都可以包含 n 个其他子目录,因此我认为递归解决方案在这里是最好的,例如:

for each directory d in root folder
   find every file/folder in d not isCalled("exception")
   copy all files into directory d
   delete all folders in directory d

我不确定在 windows 中有哪些技术可以促进此操作,但是,有人可以提供帮助吗?我怎样才能写一个脚本来最简单地做到这一点?我在谷歌上搜索了很长时间,但没有确定的答案,所以非常感谢您的帮助:)

谢谢。

我相信你要找的是windows批次。

解决方案(未测试):

Main.bat

@echo off
for /d %%a in (*) do (
  Clear "%%~a" 
  rmdir %%a
)

Clear.bat

@echo off
set root=C:\Path\To\Root\
:: Edit above line. Make sure you include last "\"
cd %1
move * %root%
for /d %%d in (*) do (
  if "%%d" NEQ "exemption" (
    %root%clear "%%~d"
    rmdir %%d
  )
)

这应该行得通。将这两个文件放在根目录中。如果 clear 批处理文件中存在错误,它应该是安全的,因为 rmdir 不会清理空目录。