以编程方式展平文件夹

时间:2015-01-27 14:14:30

标签: windows file batch-file command-line directory

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

我想迭代这个根文件夹中的所有目录,如果这些目录包含文件夹,则将它们展平(即将它们全部放入原始目录中,除非该文件夹名为“exception”。

所以我有

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

更改为(空行表示子目录的删除位置):

  

根文件夹   目录

     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中实现这一点,但是,任何人都可以提供帮助吗?我怎样才能编写最简单的脚本?我已经谷歌搜索了没有明确的答案,所以任何帮助都非常感激:)

感谢。

1 个答案:

答案 0 :(得分:1)

我相信你要找的是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不会清除空目录。

相关问题