【问题标题】:Searching windows directories for 0KB files在 Windows 目录中搜索 0KB 文件
【发布时间】:2020-07-13 15:15:40
【问题描述】:

我有一个目录,我们称之为“帐户”。大约有 600 个帐户文件夹,每个文件夹中都包含一个“IN”文件夹(以及许多其他文件夹)。

例如)

\\networkfolder\ACCOUNT\account1\in
\\networkfolder\ACCOUNT\account2\in
\\networkfolder\ACCOUNT\account3\in
\\networkfolder\ACCOUNT\account4\in
\\networkfolder\ACCOUNT\account5\in

是否有一种有效的方法/命令/工具来扫描并输出 .txt 文件中的文件名列表(及其文件路径),大小为 0KB?

  1. 尝试在 Windows 资源管理器中进行高级搜索,耗时太长。
  2. 查看了批处理脚本,不确定是否会更好。

我正在尝试通过仅搜索每个帐户文件夹中的“IN”文件夹来减少时间,因为这些 0KB 文件是我唯一关心的文件。

【问题讨论】:

    标签: file search cmd windows-explorer


    【解决方案1】:

    我不知道纯dir是否可以做到,但我有for的解决方案:

    @echo off
    for /r %%S in (in\*.*) do if %%~zS==0 echo %%S is 0 bytes
    

    这样,您将循环访问目录和子目录中的每个文件,并使用%%~zvar(在本例中为%%~zS)获取他的大小。
    然后,使用if 查看大小是否等于 0 字节。如果是,则回显到屏幕[full path of file] is 0 bytes

    【讨论】:

    • 可以使用>file.txt (for /r %S in (in\*) do ...) 加快速度(来自问题:only searching the 'IN' folders
    • 请注意,此问题的标签建议使用命令行 [cmd] 而不是 [batch-file]。
    【解决方案2】:

    这可能可以通过单行 FOR 循环来完成,但这可能在未来更易于理解和维护。需要 PowerShell 5.1+。如果您在受支持的 Windows 计算机上,它将具有或可以具有 Windows PowerShell 5.1。

    === Get-ZeroInFileList.ps1

    $BaseDir = 'C:\src\t'
    $ResultFile = 'C:\src\t\zresult.txt'
    Get-ChildItem -Recurse -Directory -Path $BaseDir -Filter 'in' |
        ForEach-Object {
            Get-ChildItem -File -Path $_.FullName |
                ForEach-Object {
                    if ($_.Length -eq 0) { $_.FullName | Out-File -FilePath $ResultFile -Encoding ascii }
                }
        }
    

    使用以下命令将其作为 cmd.exe 命令调用:

    powershell -NoLogo -NoProfile -File "Get-ZeroInFileList.ps1"
    

    【讨论】:

      【解决方案3】:

      这是我能想到的最快方法,如果你真的需要左对齐的文本文件输出,并忽略所有不直接位于名为 in 的目录中的 0 字节文件

      (For /F Tokens^=* %G In ('%__APPDIR__%Robocopy.exe "\\networkfolder\ACCOUNT" NULL /L /Max:1 /S /NC /NDL /NJH /NJS /NS^|%__APPDIR__%findstr.exe /EIR "\\in\\[^\\]*"')Do @Echo %G)>"emptyfiles.txt"
      

      如果对齐和父目录无关紧要,您可以在ACCOUNT 目录中的任何位置输出所有 0 字节文件,如下所示:

      %__APPDIR__%Robocopy.exe "\\networkfolder\ACCOUNT" NULL /L /Max:1 /S /NC /NDL /NJH /NJS /NS>"emptyfiles.txt"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-26
        • 2015-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-05
        相关资源
        最近更新 更多