информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[NT] cmd.exe: проверка каталога на пустоту 19.01.05 12:36  
Автор: LLL <Алексей> Статус: Member
<"чистая" ссылка>
В старые добрые времена в языке command.com работала конструкция
if exist путь\*.* echo каталог не пуст
В ОСях линейки NT почему-то для истинности приведенного условия достаточно наличия даже пустого каталога. Налицо отсутствие совместимости снизу вверх :-(
Существует ли для NT-систем метод проверки в bat-файлах каталога на пустоту без использования программ, не входящих в поставку ОСей?
можно поизвращаться ;) 19.01.05 14:24  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
dir /b d:\TestDir >ls
type nul >zero
fc /b ls zero >nul
if errorlevel 1 echo The directory is not empty.
del zero
del ls
вот за это спасибо! 19.01.05 20:06  
Автор: LLL <Алексей> Статус: Member
<"чистая" ссылка>
> dir /b d:\TestDir >ls

Это замечательная мысль.

> type nul >zero

Не по душе мне название zero, ибо /dev/zero обычно содержит более нуля байтов, причем намного ;-)
Обзову файл empty, да еще и не буду его каждый раз пересоздавать -- пущай прямо в каталоге с проектом валяется (тем более, что блоков данных на диске не занимает :-) ).

> fc /b ls zero >nul

Попробовал тут zero на nul заменить, но fc слишком много на себя берет, отказываясь работать с файлом nul :-(
проще так ;-)) 19.01.05 15:14  
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
<"чистая" ссылка>
rmdir TestDir
if errorlevel 1 echo directory is not empty
if errorlevel 0 mkdir TestDir && echo directory is empty
не, деструктивный метод -- не наш метод :-) 19.01.05 19:56  
Автор: LLL <Алексей> Статус: Member
<"чистая" ссылка>
> rmdir TestDir

1. Никто не говорил, что при проверке будут полномочия удалять каталог (обратное, правда, тоже не утверждалось, но универсальные методы обычно лучше.
2. При удалении потеряются прикрепленные к каталогу атрибуты (в т.ч. права доступа).
А может так?: 19.01.05 20:52  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
@echo off
for %%f in (mydir\*.*) do goto found
echo Directory is empty
goto exit
:found
echo Directory is not empty
:exit
Этот способ не сработает, если в директории будут скрытые... 20.01.05 10:14  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Этот способ не сработает, если в директории будут скрытые файлы (или вложенные директории). А "мой" способ в таких случаях будет работать, если добавить к команде dir флаг /a для вывода скрытых файлов.
Например файл desktop.ini? ;))) 20.01.05 21:37  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
тоже верно 20.01.05 11:09  
Автор: LLL <Алексей> Статус: Member
Отредактировано 27.01.05 10:54  Количество правок: 1
<"чистая" ссылка>
Но зато он вроде эквивалентен "утерянному" функционалу конструкции exist.
Значит надо будет выбирать один из этих двух вариантов под конкретную ситуацию.
В любом случае всем откликнувшимся спасибо!

P.S. Вчерашнее замечание про ключик /a у dir'а прибил за ненадобностью (забыл за неделю, что про это уже было упомянуто).
супер! спасибо! пока самый замечательный вариант :-) 19.01.05 21:16  
Автор: LLL <Алексей> Статус: Member
Отредактировано 19.01.05 21:19  Количество правок: 1
<"чистая" ссылка>
вот как можно сделать с проверкой скрытых файлов и папок 26.01.05 19:39  
Автор: Viran Статус: Незарегистрированный пользователь
<"чистая" ссылка>
вот как можно сделать с проверкой скрытых файлов и папок

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
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach