Как проще всего получить список пустых папок под Win 2000/XP?

durka82

Чтобы потом их удалить...

Ivan8209

Тогда надо брать --- и удалять:

find here -type d -exec rmdir {} \;

---
...Я работаю антинаучным аферистом...

sergey_m

find . -type d -empty

durka82

Совсем забыл про ось - винда 2000/хр.

sergey_m

Надо поставить cygwin.

bastii

быстрее VBscript написать

Ivan8209

Чтение dir/? до просветления.
Особенно ключей /A, /B, /S.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

evgen5555

А вот и не надо. Ключевое слово - UnxUtils.

enochka1145

Навскидку
dir /ad /b /s > f1 - печатает только директории
dir /a /b /s > f2 - печатает всё
fc f1 f2 - может, поможет...

durka82

Действительно
Он ведь у меня уже год как стоит
Только я им не разу не пользовался - вот и повод будет
Всем спасибо - пойду просветляться

durka82

Чтение dir/? до просветления.
Особенно ключей /A, /B, /S.
Ну почитал я dir/?, но просветления не получил
Точнее понял, что только с ее помощью мою задачу решить нельзя
Да и вообще шел винды для этого плохо подходит (в смысле, что написать можно, но так просто, как в х-ах не получится).
Так что стоит думать прежде чем бросаться такими утверждениями.

durka82

Можно конечно попробовать, но руками парсить результат труда этих команд как-то не хочется

durka82

Посмотрел дома cygwin - команда заработала - спасибо
Только подробно разобраться пока не получилась - man глючит
Пишет на "man <цифра>", что страница не найдена, а на "man find" такое:
/usr/bin/tbl: not found
/usr/bin/nroff: not found
/usr/bin/less: not found
Error executing formatting or display command.
System command (cd /usr/man && (echo ".pl 1100i"; /usr/bin/cat '/usr/man/man1/find.1'; echo; echo ".pl \n(nlu+10") | /usr/bin/tbl | /usr/bin/nroff -c -mandoc | /usr/bin/less -isrR) exited with status 32512.
No manual entry for find
Но я вроде фак по этому делу накопал - дома попробую разобраться...

sergey_m

В FAQ есть ссылки где читать маны.

durka82

Ты про http://cygwin.com/faq.html ?

sergey_m

Про http://www.freebsd.org/cgi/man.cgi. Там ты можешь почитать про find под FreeBSD и под Linux. Конечно, в cygwin может быть какие-то опции отличаются. Но еще в FAQ есть ссылка на SuSv3, ты можешь почитать про find там. И пользоваться только опциями, соответствующими SuS.

durka82

Спасибо, буду копать

Ivan8209

Прочитать ещё "rmdir /?". Для полного просветления.
Блин! Я думал, что это-то очевидно.
Да, это виндец.
Раньше (в ДОС) для вспомогательных вещей существовал BASICA/QBASIC.

dir /ad/s/b | sed "s/^/rmdir /" > %TEMP%\tempfile.bat
call %TEMP%\tempfile.bat
Что-то такое.
То, что делает sed, пришлось бы написать на васике.
---
...Я работаю антинаучным аферистом...

durka82

Прочитать ещё "rmdir /?". Для полного просветления.
Ну на, почитай:
Удаление каталога.
RMDIR [/S] [/Q] [диск:]путь
RD [/S] [/Q] [диск:]путь
/S Удаление дерева каталогов, т. е. не только указанного каталога,
но и всех содержащихся в нем файлов и подкаталогов.
/Q Отключение запроса подтверждения при удалении дерева каталогов
с помощью ключа /S.
Где здесь то, про что я спрашивал?
Блин! Я думал, что это-то очевидно.
Очевидно что? Что кто-то воспользовавшись твоей пространной подсказкой прорюхает весь хелп и сам себе все напишет?
Да, это виндец.
Раньше (в ДОС) для вспомогательных вещей существовал BASICA/QBASIC.
Блин!
Да и самого доса хватит - я про это написал - начать с "help for"...
Только вот вопрос был несколько другой - "Как ПРОЩЕ ВСЕГО...".
что делает sed
Не знаю, что он делает, но консоль вин хр такой команды не знает

Ivan8209

Тебе список-то зачем?
Тебе удалить пустые подкаталоги надо?
Попробуй командой RMDIR удалить непустой каталог.
Об успехах доложишь.
sed брать их UnxUtils.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

sergey_m

странно советовать виндовознику dir | sed, потому что у него нет find. Если нет find, значит и sed нет. Т.к. они идут в одних и тех же пакетах.

enochka1145

Это у кого это нет find? Find был ещё в MS-DOS. Собственно chkdsk /v | find file - это было что-то типа whereis file.

maggi14

не был. Это была внешняя команда, не входившая в стандартный дистр 6.22

Ivan8209

find --- это findutils.
sed --- отдельно.
Что-то не так?
Он может взять любой доступный ему текстовый препроцессор.
Например, http://www.ugcs.caltech.edu/gema/
Или отрыть (написать) заменитель xargs сам.
---
...Я работаю антинаучным аферистом...

Ivan8209

Не знаю, где ты брал такой "стандартный" дистрибутив.
---
...Я работаю антинаучным аферистом...

durka82

Тебе список-то зачем?
Посмотреть на него, возможно, отредактировать, а потом удалить соотв папки.
Попробуй командой RMDIR удалить непустой каталог.
Попробовал - действительно, это вариант.
Но это все таки несколько нестандартное использование этой команды - можно было и намекнуть.
dir /ad/s/b | sed "s/^/rmdir /" > %TEMP%\tempfile.bat
И без sed-а там делать видимо нечего - ну зачем мне файл, полный строк
Папка не пуста.

sed брать их UnxUtils.
Об этом мне тоже полагалось догадываться?

Ivan8209

Не понимаю, как может быть нестандартным использование команды
"удалить пустой каталог."

RMDIR(1) FreeBSD General Commands Manual RMDIR(1)

NAME
rmdir -- remove directories

SYNOPSIS
rmdir [-pv] directory ...

DESCRIPTION
The rmdir utility removes the directory entry specified by each directory
argument, provided it is empty.

Получаешь список, правишь его, далее:

sed -e "s/^/rmdir /" list > %TEMP%\tempfile.bat
call tempfile.bat
Если захочешь подавлять вывод ошибок, можешь взять
соответствующую приблуду из микрософтовых сей.
После всего этого, если устанешь, можешь подумать о том,
насколько проще делать всё это в униксах.
---
...Я работаю антинаучным аферистом...

durka82

То есть я правильно понимаю, что мне надо поставить UnxUtils и тогда все это заработает?

enochka1145

Возможно, ты путаешь с ff (findfile из нортоновских утилит). Я про find в смысле *nix find (или grep? т. е. надо найти нужное слово в данном потоке.

Ivan8209

Подумать сложно?
Безразлично, каким путём ты вставишь в начале каждой строки
команду rmdir. Можешь сделать это руками.
Но лучше всего --- без сомнения --- поставить UnxUtils.
С find, xargs, sed.
---
...Я работаю антинаучным аферистом...

sergey_m

> То есть я правильно понимаю, что мне надо поставить UnxUtils и тогда все это заработает?
Давно бы уже сделал это и ввёл find с теми аргументами, что я сказал в самом начале.

durka82

Сделать мне не срочно.
Я изучаю альтернативные варианты.
Но пожалуй уже хватит.
Всем спасибо.

gopnik1994

самое простое под win >= 2k
 for /f "tokens=*" %%d in ('dir /b /s /ad') do rd "%%d" 2>nul 

durka82

Круто
Я был прав насчет фора, но не думал, что все так просто
Большое спасибо

4223080

Если стоит ТоталКомандир, томожно еще так: Встать на "очищаемый" каталог и переместить его куда-нибудь (F6 только в параметрах перемещения в графе "Only files of this types" написать что-нить явно несуществующее, например 76328945692837465982736459873624895763248957632498576238947569823746.txt
Наслаждацца результатом
Оставить комментарий
Имя или ник:
Комментарий: