如何递归删除目录中的最小文件? [关闭]

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.txtpicture001.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
    

【讨论】:

以上是关于如何递归删除目录中的最小文件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在不使用堆栈/队列的情况下列出目录和子目录中的文件的非递归方式[关闭]

如何递归遍历目录以删除具有某些扩展名的文件

如何递归删除所有文件的尾随空格?

delphi如何删除目录和目录下的所有文件

如何在 PHP 中递归删除目录及其全部内容(文件 + 子目录)? [复制]

类以递归方式列出/删除目录中的文件