使用与Windows 7中的命令处理器兼容的简单批处理文件,如何检测文件夹是否包含任何内容(意味着一个或多个文件或子文件夹,即非空)?
我试过了:
IF EXIST C:\FOLDERNAME\* GOTO ROUTINE
但这总是返回TRUE
,因此转到ROUTINE
。
如何实现这一目标?
答案 0 :(得分:3)
dir /A /B /S "C:\FOLDERNAME" | findstr /L ".">NUL && GOTO ROUTINE
/ S也可以查看子目录 / R没有给出我期望的结果,所以尝试用/ L
(仅当名称中没有带点的文件夹时才有效。)
答案 1 :(得分:1)
我更喜欢的解决方案是遍历目录中的文件,然后遍历每个文件的属性以获取其大小并找出它是否大于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