如何递归删除目录中的最小文件? [关闭]
Posted
技术标签:
【中文标题】如何递归删除目录中的最小文件? [关闭]【英文标题】:How to delete the smallest file in a directory recursively? [closed] 【发布时间】:2022-01-18 13:44:19 【问题描述】:示例:根文件夹中有两个目录:
"Root folder" wishfull_script_to_delete_small_files.BAT "SubFolder_One" test1.txt .......... 1 kb test2.txt .......... 1.1 kb "SubFolder_Two" picture001.jpg ..... 34 kb picture002.jpg ..... 64 kb
所以我想自动删除 test1.txt
和 picture001.jpg
但不是脚本(批处理)本身(可能是最小的文件)。
【问题讨论】:
看看dir /?
有一个排序选项,在你的情况下它将是dir /O:-S
,然后看看for /?
,你会看到你是如何构建最终代码的。
我不能,你的问题太不清楚了。你展示了两个例子,我不确定场景是什么。它适用于所有子文件夹吗?这些子文件夹中的子文件夹呢?等等等等。
如果出现目录中只有一个文件的情况怎么办? (毕竟,一旦你删除了两个中的一个,如果再次运行脚本,即使是意外,你也会失去一切)。另外,如果两个文件应该报告相同的大小,或者有几个文件,最小的两个报告相同的字节数,会发生什么? (如果两个文件报告的大小相同,并不表示两个文件相同,因此删除哪个文件不应是它们之间的随机选择)。您还应该解释'recursevly',因为只有一级分支!
请尊重本网站不是免费的代码/脚本编写服务!请拨打tour,访问help center,并在此处了解How to Ask!一旦您自己尝试了某事但失败了,请回到这里,edit 您的问题并提供您的编码尝试的minimal reproducible example!谢谢,祝你好运!
好的,我明白了,无论如何感谢您的帮助,看来我需要先在其他地方开始学习,然后才能在这里提出我的问题,完全可以理解。谢谢大家的帮助,对不起,我占用了你们的时间:)
【参考方案1】:
如果您打算学习一些东西,PowerShell 是一个比cmd.exe
更强大的工具。它适用于所有受支持的 Windows 系统。如果编写得当,相同的代码可以在 UNIX、Linux 和 Mac 系统上原封不动地运行。
一旦您确信将删除正确的文件,请从 Remove-Item
命令中删除 -WhatIf
。
Get-ChildItem -Recurse -Directory -Path 'C:\src\t' |
ForEach-Object
Get-ChildItem -File -Path $_ |
Where-Object $_.Name -ne $(Split-Path -Path $PSCommandPath -Leaf) |
Sort-Object -Property Length |
Select-Object -First 1 |
Remove-Item -WhatIf
【讨论】:
以上是关于如何递归删除目录中的最小文件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在不使用堆栈/队列的情况下列出目录和子目录中的文件的非递归方式[关闭]