以编程方式展平文件夹
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
不会清理空目录。
我有一个包含一组目录的文件夹。
我想遍历此根文件夹中的所有目录,如果这些目录包含文件夹,则将它们展平(即将它们全部放入原始目录,除非文件夹名为 "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
不会清理空目录。