2015-06-29 8 views
0

У меня есть каталог, который содержит подкаталоги, как это:DOS: Убедитесь, что каталог содержит только подкаталоги и файлы

C:\FILES 
C:\FILES\DONE 

Я хочу, чтобы проверить, что файлы не содержит файлов:

if not exist C:\FILES\*.* (
    echo No files to process. 
    exit /b 
) 

Но тест «не существует ...» никогда не является истинным из-за подкаталога.

Любые идеи о том, как проверить, есть ли в каталоге какие-либо файлы, которые не являются каталогами?

ответ

2

Try, чтобы получить список файлов, и если это не удается, нет файлов

dir /a-d "c:\files\*" >nul 2>nul || (
    echo No files to process 
    exit /b 
) 

Если нет файлов, тем dir /a-d команды (средство переключения исключения директории) не удастся. || - оператор условного выполнения, который выполнит следующие команды, если предыдущий сбой.

-1

Попробуйте

if not exist dir c:\FILES\*.* /a:-d (

Вы можете найти больше dir here

PS

Я не DOS в моей досягаемости. Поэтому я не могу проверить приведенный выше фрагмент кода. Но я думаю, что это близко к тому, что вы ищете. Если что-то очень близко к этому должно работать.

0

Простой код:

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 
1

Только тогда, когда есть файлы, то for выполнить goto.

for %%a in (C:\FILES\*.*) do goto files 
echo No files to process. 
exit /b 
Смежные вопросы