如何检测文件夹是否为空(Windows批处理文件)?

时间:2017-04-14 09:29:58

标签: windows batch-file cmd windows-7 console

使用与Windows 7中的命令处理器兼容的简单批处理文件,如何检测文件夹是否包含任何内容(意味着一个或多个文件或子文件夹,即非空)?

我试过了:

IF EXIST C:\FOLDERNAME\* GOTO ROUTINE

但这总是返回TRUE,因此转到ROUTINE

如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

dir /A /B /S "C:\FOLDERNAME" | findstr /L ".">NUL && GOTO ROUTINE

/ S也可以查看子目录 / R没有给出我期望的结果,所以尝试用/ L

(仅当名称中没有带点的文件夹时才有效。)

答案 1 :(得分:1)

我更喜欢的解决方案是遍历目录中的文件,然后遍历每个文件的属性以获取其大小并找出它是否大于0。

我制作的以下脚本验证了以下内容:

  • 如果指定的目录存在。
  • 文件夹是否包含文件。
  • 如果文件夹包含大于 0 字节的文件。

如果没有文件或文件不超过0字节,脚本将报告该目录不包含任何文件。

要运行脚本,您必须使用以下命令,其中“C:/path”是要检查的目录:

start name.bat "C:/path"

<块引用>

重命名脚本并更改目录。


蝙蝠脚本:

@echo off

REM Command to launch the script:
REM >> start name.bat "C:/path"

REM Check if path exist
if exist %1 (

    REM Loop in dir files
    for /f "delims=" %%f in ('dir /a /b /s %1') do (
        
        REM Check file sizes
        for /f "usebackq delims=" %%s in ('%%f') do (

            REM Check if there is a file bigger than 0 bytes
            if %%~zs GTR 0 (
                echo The directory is not empty
                goto end
            )
        )
    )
    echo The directory is empty

) else (
    echo The directory does not exist
)

:end
pause