TASKMASTER. Скрипт "Рекурсия по DIR + delete". НУЖ

Обсуждение технических вопросов по продуктам Novell

TASKMASTER. Скрипт "Рекурсия по DIR + delete". НУЖ

Сообщение Музалёв Николай » 23 янв 2009, 20:27

Коллеги!

Возникла необходимость очищать транзитную общую область - задача в общем всем известная. Предполагается пользовать под это дело упомянутый продукт.

Если у кого есть отлаженный скрипт на эту тему, то не пожадничайте поделиться.

(Ну не то, чтобы совсем тормоз, но пока не написалось - наверное, еще не совсем въехал в тонкости языка и боюсь слишком свободных экспер., поскольку отлаживаюсь хотя и на рабочем томе, но на боевом сервере. И надо как всегда - "вчера" и время катастрофически поджимает... Хочется побыстрее запуститься.)

Формально задача такова:

ИСХОДНАЯ:
- существует корневой каталог, назовем RootDir

- в нем существует произвольное количество подкаталогов (например Dir_1, Dir_2, ... Dir_N)

- каждый из каталогов Dir_i может содержать сложное дерево файловых объектов: и каталоги следующего уровня, и просто файлы россыпью и смесь этого.

- атрибуты на элементы этого дерева расставлены совершенно произвольно. И системные и наши, NW-шные (т.е. обычная файло-свалка прямохордящих)

НЕОБХОДИМО:
- получить скрипт, который заходит в RootDir и НЕ удаляя каталоги первого уровня (Dir_i) , сносит в каждом таком каталоге всё нижележащее.

Спасибо.

PS. Кстати, может кому попадался форум, где такими скриптами хвастались - не затруднитесь ссылочку.
Не официальном сайте есть примеры, но они какие-то слишком академические.... По к/мере те, которые уже просмотрел...
armoracia rusticana (lat.), "блины" и "фиги" всех видов, а также смайлики - крайне не желательны !
Музалёв Николай
 
Сообщения: 3034
Зарегистрирован: 04 июн 2002, 19:58
Откуда: Беларусь. МИНСК.

Сообщение solomin » 26 янв 2009, 07:46

find ./ -maxdepth 2 -mindepth 2 -type d -exec rm -rf {} \;
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Сообщение Музалёв Николай » 26 янв 2009, 12:57

Хм... Если это - из TaskMastera, то что то не нахожу этого в доках.
А если это - не из ТМ, то не затруднит ли соотв. комментарии?
armoracia rusticana (lat.), "блины" и "фиги" всех видов, а также смайлики - крайне не желательны !
Музалёв Николай
 
Сообщения: 3034
Зарегистрирован: 04 июн 2002, 19:58
Откуда: Беларусь. МИНСК.

Сообщение Dimerson » 26 янв 2009, 13:08

есть самописный аналог rm-rf (NLM) можно прибивать каталоги и потом пересоздавать. если это временная файлопомойка то можно и каталоги прибивать ...
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Музалёв Николай » 26 янв 2009, 13:36

А дать можно ?
armoracia rusticana (lat.), "блины" и "фиги" всех видов, а также смайлики - крайне не желательны !
Музалёв Николай
 
Сообщения: 3034
Зарегистрирован: 04 июн 2002, 19:58
Откуда: Беларусь. МИНСК.

Сообщение solomin » 26 янв 2009, 14:29

у меня подобные вещи выполняются с линуксовой клиентской машины(если сервер на OES(2) linux - то можно прямо на нем).

P.S. это была линуксовая команда find.
solomin
 
Сообщения: 80
Зарегистрирован: 11 мар 2008, 11:24
Откуда: Екатеринбург

Сообщение Dimerson » 26 янв 2009, 15:22

Музалёв Николай писал(а):А дать можно ?


rmrf.nlm ушел мылом (потестите сперва гденить в уголочке).
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Charles Kludge » 26 янв 2009, 21:49

Код: Выделить всё
// (#) 2009 by Charles Kludge
// BEWARE! ALL LINES MUST BE TRIMMED - I.E. W/O TRAILING SPACES & <TABS>
// TMRUN del_xlam.tsk vol:/dir_to_erase
// Erases contents of 1st level subdirs
// LONG_NAMES supported
// Russian names supported
// Tested on TaskMaster v4.20(2008/11/07) under NW411SP9ENG
//LOG ON
CD %0
ECHO Processing %CWD%
// findfirst()
DEFINE %1 %DIR_SUB_*.*%
WHILE "%1">""
DEFINE %2 %CWD%\%1
// creates full path to current subdir in LONG_NAME format
DEFINE %2 %FILE_NAME_LONG_%2%
ECHO [%2]
// like  rm -rf %1 rmdir %1
// /P Purge deleted directories/files
// /Y Don't confirm
DELTREE %1 /P /Y
// recreate erased dir in
// /L LONG_NAMES format
// quotes needs tu support spases in dirnames
MKDIR "%2" /L
// findnext()
DEFINE %1 %DIR_SUB_%
LOOP
// remove remaining files in CWD
ERASE *.* /Y
WBR, Charles Kludge
Charles Kludge
 
Сообщения: 80
Зарегистрирован: 23 апр 2003, 14:37
Откуда: Санкт-Петербург

Сообщение Музалёв Николай » 28 янв 2009, 13:50

Спасибо, коллеги!
И модуль, и скрипт пригодились, правда в разных целях.

Что касается скрипта от Чарли, то он работает ( кто бы сомневался!), но последнюю его часть
Код: Выделить всё
.......
LOOP
// remove remaining files in CWD
ERASE *.* /Y

предлагается принять в версии Вариант ДВА:
Код: Выделить всё
.......
LOOP
// remove remaining files in CWD
//
// findfirst() (FILE)
DEFINE %1 %DIR_FILE_*.*%
//
// Are there FILES in ROOT dir ??
IF NOT "%1"=="" THEN BEGIN
//
// If YES delete this files.
WHILE "%1">""
//
DEFINE %2 %1
// Attributes? Convert it to NORMAL status.
CHMOD %2 N /H
//
// findnext() (FILE)
DEFINE %1 %DIR_FILE_%
//
ERASE %2
//
LOOP
//
ENDIF
//

Оснвание такой модификации очевидно: файлы прямоходящего могут иметь практически любой набор атрибутов. (У меня есть люди, рабочие станции которых умудряются выставить Di & Ri на файлы и каталоги. Причем программисты едят землю, что ничего не знают о системе NW.
И как бы это могло быть?)

Что касается ввода временной переменной %2, то это обусловлено запретом удалить текущий "рабочий" файл (при работе скрипта он в %1) ДО ТОГО , как будет проведена выборка следующего "рабочего файла".

Ребята!
Еще раз - огромное Спасибо.

Тему закрыть.
armoracia rusticana (lat.), "блины" и "фиги" всех видов, а также смайлики - крайне не желательны !
Музалёв Николай
 
Сообщения: 3034
Зарегистрирован: 04 июн 2002, 19:58
Откуда: Беларусь. МИНСК.


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

cron