如何计算文件大小> 0的目录中有多少文件?

Posted

技术标签:

【中文标题】如何计算文件大小> 0的目录中有多少文件?【英文标题】:How to count how many files exist in a directory with file size > 0? 【发布时间】:2014-08-12 07:39:13 【问题描述】:

我想计算文件大小大于零的目录中有多少个 *.diff 文件。

如果有多个文件,我需要更改 ERRORLEVEL。

执行此操作的批处理命令是什么?

【问题讨论】:

【参考方案1】:
@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
:: kill any .diff files
DEL %sourcedir%\*.diff >NUL 2>NUL
:: call the detect routine
CALL :detect
ECHO run 1: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 1 zero-length file
COPY NUL "%sourcedir%\1.diff" >NUL 2>NUL
CALL :detect
ECHO run 2: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 2 zero-length file
COPY NUL "%sourcedir%\2.diff" >NUL 2>NUL
CALL :detect
ECHO run 3: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 2 zero-length file + 1 non-zlf
ECHO.>"%sourcedir%\3.diff"
CALL :detect
ECHO run 4: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 2 zero-length file + 2 non-zlf
ECHO.>"%sourcedir%\4.diff"
CALL :detect
ECHO run 5: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 2 zero-length file + 3 non-zlf
ECHO.>"%sourcedir%\5.diff"
CALL :detect
ECHO run 6: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 0 zero-length file + 3 non-zlf
DEL %sourcedir%\1.diff >NUL 2>NUL
DEL %sourcedir%\2.diff >NUL 2>NUL
CALL :detect
ECHO run 7: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 0 zero-length file + 2 non-zlf
DEL %sourcedir%\4.diff >NUL 2>NUL
CALL :detect
ECHO run 8: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%
:: 0 zero-length file + 1 non-zlf
DEL %sourcedir%\3.diff >NUL 2>NUL
CALL :detect
ECHO run 9: %countfg0% non-zero .diff files found; errorlevel=%ERRORLEVEL%


GOTO :EOF

:detect
:: set count-of-(files greater than 0)
SET /a countfg0=0
FOR %%a IN ("%sourcedir%\*.diff") DO IF %%~za neq 0 SET /a countfg0+=1
IF %countfg0%==0 EXIT /b 0
IF %countfg0%==1 EXIT /b 1
EXIT /b 2

这是一个测试/检测例程,在测试目录中创建 0 长度和非零长度 .diff 文件。您需要更改sourcedir 的设置以适应您的情况。

:detect 例程实际上完成了这项工作,并且需要使用当前结构为called。剩下的只是为呃测试建立不同的测试条件。

【讨论】:

【参考方案2】:

要列出 PowerShell 下的所有非空 *.diff 文件,您可以使用以下脚本:

"`n" 
$filePath = Read-Host "Please Enter File Path to Search" 
"`n" 

Get-ChildItem -Recurse -Force $filePath -ErrorAction SilentlyContinue | Where-Object  ($_.PSIsContainer -eq $false) -and  ( $_.Name -like "*.pdf") -and  ( $_.Length -gt 0kb)   | Select-Object Name,Directory| Format-Table -AutoSize * 

write-Host "------------END of Result--------------------" -ForegroundColor Magenta 

【讨论】:

你未能仅列出 *.diff 文件

以上是关于如何计算文件大小> 0的目录中有多少文件?的主要内容,如果未能解决你的问题,请参考以下文章

Notes 和 Domino 已知限制

R语言使用fs包的dir_info函数查看文件夹下所有目录的大小递归地计算所有目录的实际大小(多少M多少GTabulate and display folder size)

R语言使用fs包的dir_info函数查看文件夹下所有目录的大小递归地计算所有目录的实际大小(多少M多少GTabulate and display folder size)

如何在计算机中快速新建TXT文本文档

如何计算目录中文件的总大小[重复]

Linux下如何查看一个文件夹下有多少文件