супер! спасибо! пока самый замечательный вариант :-)19.01.05 21:16 Число просмотров: 2197 Автор: LLL <Алексей> Статус: Member Отредактировано 19.01.05 21:19 Количество правок: 1
В старые добрые времена в языке command.com работала конструкция
if exist путь\*.* echo каталог не пуст
В ОСях линейки NT почему-то для истинности приведенного условия достаточно наличия даже пустого каталога. Налицо отсутствие совместимости снизу вверх :-(
Существует ли для NT-систем метод проверки в bat-файлах каталога на пустоту без использования программ, не входящих в поставку ОСей?
можно поизвращаться ;)19.01.05 14:24 Автор: :-) <:-)> Статус: Elderman
Не по душе мне название zero, ибо /dev/zero обычно содержит более нуля байтов, причем намного ;-)
Обзову файл empty, да еще и не буду его каждый раз пересоздавать -- пущай прямо в каталоге с проектом валяется (тем более, что блоков данных на диске не занимает :-) ).
> fc /b ls zero >nul
Попробовал тут zero на nul заменить, но fc слишком много на себя берет, отказываясь работать с файлом nul :-(
проще так ;-))19.01.05 15:14 Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
1. Никто не говорил, что при проверке будут полномочия удалять каталог (обратное, правда, тоже не утверждалось, но универсальные методы обычно лучше.
2. При удалении потеряются прикрепленные к каталогу атрибуты (в т.ч. права доступа).
А может так?:19.01.05 20:52 Автор: Den <Денис Т.> Статус: The Elderman
Этот способ не сработает, если в директории будут скрытые файлы (или вложенные директории). А "мой" способ в таких случаях будет работать, если добавить к команде dir флаг /a для вывода скрытых файлов.
Например файл desktop.ini? ;)))20.01.05 21:37 Автор: Den <Денис Т.> Статус: The Elderman
Но зато он вроде эквивалентен "утерянному" функционалу конструкции exist. Значит надо будет выбирать один из этих двух вариантов под конкретную ситуацию.
В любом случае всем откликнувшимся спасибо!
P.S. Вчерашнее замечание про ключик /a у dir'а прибил за ненадобностью (забыл за неделю, что про это уже было упомянуто).
супер! спасибо! пока самый замечательный вариант :-)19.01.05 21:16 Автор: LLL <Алексей> Статус: Member Отредактировано 19.01.05 21:19 Количество правок: 1
вот как можно сделать с проверкой скрытых файлов и папок
set target=c:\targetdir
cd %target%
attrib /s /d |find /i . && goto null
cls
@echo Not Null!!!!!!!!!!!!!!!!!!
@Pause
Exit
:Null
cls
@echo Null!!!!!!!!!!!!!!!!!!
@Pause
Exit
или другой вариант, но если файлов в директории много, он будет выполнятся оооочень долго :)))
set target=c:\targetdir
cd %target%
attrib /s /d |find /v /i . >%temp%\enumdir.txt
for %%i in (%temp%\enumdir.txt) do if %%~zi==0 goto Null
cls
@echo Not Null!!!!!!!!!!!!!!!!!!
@Pause
Exit
:Null
cls
@echo Null!!!!!!!!!!!!!!!!!!
@Pause
Exit