File 正在windows目录中搜索0KB文件

File 正在windows目录中搜索0KB文件,file,search,cmd,windows-explorer,File,Search,Cmd,Windows Explorer,我有一个目录,我们叫它“账户”。共有约600个帐户文件夹,每个文件夹中都包含一个“in”文件夹(以及许多其他文件夹) ex) 是否有一种有效的方法/命令/工具来扫描和输出.txt文件中大小为0KB的文件名列表(及其文件路径) 已尝试在Windows资源管理器中进行高级搜索,时间太长 查看了批处理脚本,不确定这是否会更好 我试图通过只搜索每个帐户文件夹中的“IN”文件夹来减少时间,因为我只关心那些0KB的文件。我不知道纯目录是否可以做到这一点,但我有一个for的解决方案: @echo off fo

我有一个目录,我们叫它“账户”。共有约600个帐户文件夹,每个文件夹中都包含一个“in”文件夹(以及许多其他文件夹)

ex)

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

  • 已尝试在Windows资源管理器中进行高级搜索,时间太长
  • 查看了批处理脚本,不确定这是否会更好

  • 我试图通过只搜索每个帐户文件夹中的“IN”文件夹来减少时间,因为我只关心那些0KB的文件。

    我不知道纯
    目录是否可以做到这一点,但我有一个
    for
    的解决方案:

    @echo off
    for /r %%S in (in\*.*) do if %%~zS==0 echo %%S is 0 bytes
    
    这样,您就可以对目录和子目录中的每个文件进行循环,并使用
    %%~zvar
    (在本例中为
    %%~zS
    )获取其大小。

    然后,使用
    if
    查看大小是否等于0字节。如果是,则屏幕上的回声
    [文件的完整路径]为0字节

    我不知道纯
    目录是否可以做到这一点,但我有一个
    的解决方案:

    @echo off
    for /r %%S in (in\*.*) do if %%~zS==0 echo %%S is 0 bytes
    
    这样,您就可以对目录和子目录中的每个文件进行循环,并使用
    %%~zvar
    (在本例中为
    %%~zS
    )获取其大小。

    然后,使用
    if
    查看大小是否等于0字节。如果是,则屏幕的回声
    [文件的完整路径]为0字节

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

    ==Get-zeroinfillist.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"
    

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

    ==Get-zeroinfillist.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"
    

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

    (对于/F令牌^=*%G In(“%\\\\\\\\\\\\\\\\\\\\\”\\networkfolder\ACCOUNT”NULL/L/Max:1/S/NC/NDL/NJH/NJS/NS^\\\\\\\\\\\\\\\\\\\\\\”)Do@Echo%G>“emptyfiles.txt”
    
    如果对齐方式和父目录无关紧要,您可以像下面这样输出
    帐户
    目录中任何位置的所有0字节文件:

    %\uuuuu APPDIR\uuuuu%Robocopy.exe“\\networkfolder\ACCOUNT”NULL/L/Max:1/S/NC/NDL/NJH/NJS/NS>“emptyfiles.txt”
    
    如果您确实需要左对齐文本文件输出,并且忽略所有不直接位于
    中名为
    的目录中的0字节文件,这是我能想到的最快的方法

    (对于/F令牌^=*%G In(“%\\\\\\\\\\\\\\\\\\\\\”\\networkfolder\ACCOUNT”NULL/L/Max:1/S/NC/NDL/NJH/NJS/NS^\\\\\\\\\\\\\\\\\\\\\\”)Do@Echo%G>“emptyfiles.txt”
    
    如果对齐方式和父目录无关紧要,您可以像下面这样输出
    帐户
    目录中任何位置的所有0字节文件:

    %\uuuuu APPDIR\uuuuu%Robocopy.exe“\\networkfolder\ACCOUNT”NULL/L/Max:1/S/NC/NDL/NJH/NJS/NS>“emptyfiles.txt”
    
    使用
    >file.txt(对于/r%S in(in\*)do…)
    (来自问题:
    仅搜索“in”文件夹
    )可以加快速度。请注意,此问题的标记表明命令行[]不是[]。使用
    >file.txt(对于/r%S in(in\*)do…)可以加快速度
    (来自问题:
    仅搜索“IN”文件夹
    )请注意,此问题的标记表示命令行[],而不是[]。