我必须根据以下层级的文件夹/子文件夹结构组织的数据集,包括文件之外的文件:批量移动随机命名的子文件夹
我想删除所有滋扰子文件夹(移动它的内容是外面在同一层级+删除令人讨厌的文件夹),从而结束了这样的组织的文件:
我怎样才能做到这一点,使用批处理文件,从命令提示符下运行在Windows 7中?我已经尝试了一些for%F和%% F的语句,但都没有工作。感谢任何提示。
我必须根据以下层级的文件夹/子文件夹结构组织的数据集,包括文件之外的文件:批量移动随机命名的子文件夹
我想删除所有滋扰子文件夹(移动它的内容是外面在同一层级+删除令人讨厌的文件夹),从而结束了这样的组织的文件:
我怎样才能做到这一点,使用批处理文件,从命令提示符下运行在Windows 7中?我已经尝试了一些for%F和%% F的语句,但都没有工作。感谢任何提示。
我相信以下将实现你的目标当且仅当所有子文件夹和文件名是唯一。如果有重复,那么所有的地狱都会崩溃。
我还没有测试过,所以先备份和/或尝试一次性数据上的代码。
您必须修改第一个PUSHD命令以指向所有“人员n”文件夹所在的根目录。
@echo off
pushd "yourRootWherePersonFoldersReside"
for /d %%U in (*) do (
pushd "%%U"
for /f "eol=: delims=" %%A in ('dir /b /ad 2^>nul') do (
for /d %%B in ("%%A\*") do (
for /d %%C in ("%%B\*") do (
md "%%~nxC"
for /d %%D in ("%%C\*") do move "%%D\*" "%%~nxC" >nul 2>nul
)
)
rd /s /q "%%A"
)
popd
)
popd
FOR循环的第二必须是FOR/F,而不是FOR/d,因为/ d具有迭代循环开始后已添加的文件夹的潜力。 FOR/F会在迭代开始之前缓存DIR命令的全部结果,所以新创建的文件夹可以保证不会发生干扰。
没有任何提示如何区分滋扰和有用既不文件也没有文件夹这个任务是无法解决的。 – LotPings
您的目标有潜在的主要问题。当您尝试将它们移动到“人物n”级别时,曾祖父文件夹名称可能会发生冲突。如果每个有用的文件夹可能有多个子文件夹,则可能会遇到与文件名相同的问题。 – dbenham
@LotPings对不起,如果我不清楚。我试图在层次结构中指出哪些子文件夹是讨厌的文件夹。这些是位于父级文件夹下的两个子文件夹;和立即包含有用文件的子文件夹。 – z8080