我有一个脚本会从嵌套文件结构中删除所有超过31天的文件。使用批处理文件删除子文件夹中的所有空文件夹?
在某些时候,它会留下空文件夹,我正在寻找一种方法来删除它们,最好保留比31天更新的文件夹。鉴于rd FolderName
不会删除文件夹,如果它不是空的,我可以用它来删除文件夹。问题是,如果我这样做,它不会删除所有空文件夹,只有树中最深的文件夹。如果我可以将文件的名单反转给我,它就会起作用。如果这不可能,还有另一种方法吗?
注意:rd/s不会删除嵌套的文件夹,但也会删除其文件。如果文件夹不为空,我不想删除该文件夹。
这里是我的脚本:
@echo off
cd /d "C:\MyPath"
:: remove files that are older than 31 days (retention period)
forfiles /s /d -31 /c "cmd /c if @isdir==FALSE del @relpath")
:: attempt to remove folders (will fail if the folder is not empty.)
forfiles /s /d -31 /c "cmd /c if @isdir==TRUE rd @relpath"
以上脚本将只删除最深的文件夹。我想我可以连续执行8次文件,但这是对资源的严重浪费。
'SORT'有'/ r'选项... – Magoo
@Magoo有趣。现在我必须弄清楚如何使用我的脚本工作。 forfiles | sort/r的作品,但我如何执行一个命令呢?如果你有答案,随时给我写一个答案,我会很乐意给你一票和检查。 :) – LPChip
'for/f“delims =”%% a in('dir/s/b/ad“C:\ mypath”^ | sort/r')do echo %% a'会产生一个基本的目录列表目录的子目录,然后对其进行反向排序,以便任何目录名显示*在列表中的子目录之后。 – Magoo