Windows 检查目录是否只包含子目录而不包含文件

Windows 检查目录是否只包含子目录而不包含文件,windows,batch-file,cmd,Windows,Batch File,Cmd,我有一个目录,它有如下子目录: C:\FILES C:\FILES\DONE 我要检查文件是否不包含任何文件: if not exist C:\FILES\*.* ( echo No files to process. exit /b ) 但是由于子目录的原因,“notexist…”测试永远不会为真 关于如何检查目录中是否有非目录文件,您有什么想法吗?试试看 if not exist dir c:\FILES\*.* /a:-d ( 你可以在网上找到更多信息 PS 我手边没有DO

我有一个目录,它有如下子目录:

C:\FILES
C:\FILES\DONE
我要检查文件是否不包含任何文件:

if not exist C:\FILES\*.* (
  echo No files to process.
  exit /b 
)
但是由于子目录的原因,“notexist…”测试永远不会为真

关于如何检查目录中是否有非目录文件,您有什么想法吗?

试试看

if not exist dir c:\FILES\*.* /a:-d (
你可以在网上找到更多信息

PS


我手边没有DOS。所以我不能测试上面的代码片段。但是我认为它与您所要查找的内容非常接近。如果不是非常接近,那么应该可以使用。

尝试获取文件列表,如果失败,则没有文件

nul 2>nul||( 没有要处理的文件 退出/b ) 如果没有文件,则
dir/a-d
命令(开关表示排除目录)将失败
|
是一个条件执行运算符,如果前一个命令失败,它将执行以下命令。

简单代码:

for /f "delims=|" %%f in ('dir /b c:\FILES\') do goto :files
echo No files found
pause
goto:eof
:files
echo Files found
pause
goto:eof

只有当存在文件时,for的
才执行
goto

for %%a in (C:\FILES\*.*) do goto files
echo No files to process.
exit /b

如果要检查此级别上是否存在子目录:

(DIR /D "C:\FILES\" | findstr /i /p /r /c:"2 Directory" > nul 2> nul) && echo "No directories except current and parent."
这个简单的内联命令可以很容易地适应任何情况;-)