Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | | |
тоже верно 20.01.05 11:09 Число просмотров: 2004
Автор: LLL <Алексей> Статус: Member Отредактировано 27.01.05 10:54 Количество правок: 1
|
Но зато он вроде эквивалентен "утерянному" функционалу конструкции exist. Значит надо будет выбирать один из этих двух вариантов под конкретную ситуацию.
В любом случае всем откликнувшимся спасибо!
P.S. Вчерашнее замечание про ключик /a у dir'а прибил за ненадобностью (забыл за неделю, что про это уже было упомянуто).
|
<operating systems>
|
[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
|
|
|