Удаление не пустых папок с исключениями

Обсуждение программ nnCron и nnCron LITE

Удаление не пустых папок с исключениями

Postby gdavydov » Fri, 23 Dec 2011, 10:35

Добрый день. Помогите решить такую задачу. Есть папка G:\!Obmen\ и в ней куча всякого пользовательского хлама. Нужно удалять абсолютно все (и папки и файлы), но оставлять папки с файлами, например, с такими путями G:\!Obmen\123\ G:\!Obmen\456\789\
gdavydov
 
Posts: 5
Joined: Fri, 23 Dec 2011, 10:11

Re: Удаление не пустых папок с исключениями

Postby Morituruz » Fri, 23 Dec 2011, 11:03

Как-то так (не проверял):
Code: Select all
#( del_everything
SingleInstance
NoActive
Action:
S" G:\!Obmen\*" FOR-FILES
  FOUND-FULLPATH S" /G:\\\!Obmen\\123\\/i" RE-MATCH NOT
  FOUND-FULLPATH S" /G:\\\!Obmen\\456\\789\\/i" RE-MATCH NOT
  AND
  IF
  IS-DIR?
    DIR-DELETE: "%FOUND-FULLPATH%"
  ELSE
    FILE-DELETE: "%FOUND-FULLPATH%"
  THEN
;FOR-FILES

)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Удаление не пустых папок с исключениями

Postby gdavydov » Fri, 23 Dec 2011, 11:39

Сейчас проверил. При сохранении задачи вышла ошибка CLASSIC-TASK-#-1: WARNING: C:\Program Files\ncron\nncron.tab line:35 pos:3. Invalid time specification. Possible range is [0-59] А после выполнения задачи вышла ошибка "ошибка стека в Action " и были удалены все директории в папке (включая иключения).

P.S. Если это имеет значение, то названия директорий будут иметь как английские имена, так и русские
gdavydov
 
Posts: 5
Joined: Fri, 23 Dec 2011, 10:11

Re: Удаление не пустых папок с исключениями

Postby Morituruz » Fri, 23 Dec 2011, 14:07

Вы случайно код из моего ответа не в окно добавления задачи скопировали?
В каталоге nncron должен быть файл nncron.tab, и этот текст нужно непосредственно туда скопировать.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Удаление не пустых папок с исключениями

Postby gdavydov » Fri, 23 Dec 2011, 16:04

По Вашему совету вставил в nncron.tab Выполнил задачу и результат тот же - удалено все
gdavydov
 
Posts: 5
Joined: Fri, 23 Dec 2011, 10:11

Re: Удаление не пустых папок с исключениями

Postby Morituruz » Fri, 23 Dec 2011, 16:16

Я так понимаю, ошибок теперь не выдаёт, значит вам надо заменить регулярные выражения на те, которые нужны вам.
Справка:
http://nncron.ru/help/RU/commands/regexp.htm

т.е. в этой части задачи:
Code: Select all
  FOUND-FULLPATH S" /G:\\\!Obmen\\123\\/i" RE-MATCH NOT
  FOUND-FULLPATH S" /G:\\\!Obmen\\456\\789\\/i" RE-MATCH NOT

проверяется совпадение пути найденного файла с именем каталогов, которые удалять не надо.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Удаление не пустых папок с исключениями

Postby VoidVolker » Fri, 23 Dec 2011, 16:24

Moriturus wrote:#( del_everything
SingleInstance
NoActive
Action:
S" G:\!Obmen\*" FOR-FILES
FOUND-FULLPATH S" /G:\\\!Obmen\\123\\/i" RE-MATCH NOT
FOUND-FULLPATH S" /G:\\\!Obmen\\456\\789\\/i" RE-MATCH NOT
AND
IF
IS-DIR?
DIR-DELETE: "%FOUND-FULLPATH%"
ELSE
FILE-DELETE: "%FOUND-FULLPATH%"
THEN
;FOR-FILES

)#

А кто флаг-то забирать будет?
Code: Select all
#( del_everything
SingleInstance
NoActive
Action:
RECURSIVE TODEPTH
S" G:\!Obmen\*" FOR-FILES
  FOUND-FULLPATH S" /G:\\\!Obmen\\123\\/i" RE-MATCH NOT
  FOUND-FULLPATH S" /G:\\\!Obmen\\456\\789\\/i" RE-MATCH NOT
  AND
  IF
    FOUND-FULLPATH
    IS-DIR? IF
      DIR-DELETE
    ELSE
      FDELETE
    THEN
  THEN
;FOR-FILES
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Удаление не пустых папок с исключениями

Postby gdavydov » Fri, 23 Dec 2011, 17:41

Вставил доработанный вариант от VoidVolker (естественно заменив пути), все равно удаляет полностью все файлы в директории.
Last edited by gdavydov on Fri, 23 Dec 2011, 17:59, edited 2 times in total.
gdavydov
 
Posts: 5
Joined: Fri, 23 Dec 2011, 10:11

Re: Удаление не пустых папок с исключениями

Postby VoidVolker » Fri, 23 Dec 2011, 17:50

Думаю регекспы тут вообще не нужны, обычного поиска будет достаточно:
Code: Select all
#( del_everything
SingleInstance
NoActive
Action:
RECURSIVE TODEPTH
S" G:\!Obmen\*" FOR-FILES
  FOUND-FULLPATH S" \123\" SEARCH NIP NIP
  FOUND-FULLPATH S" \456\789\" SEARCH NIP NIP OR
  IF ELSE
    FOUND-FULLPATH
    IS-DIR? IF
      DIR-DELETE
    ELSE
      FDELETE
    THEN
  THEN
;FOR-FILES
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Удаление не пустых папок с исключениями

Postby gdavydov » Fri, 23 Dec 2011, 18:00

немного поэкспериментировав заметил такую закономерность, что если в строке FOUND-FULLPATH S" /G:\\\!Obmen\\456\\789\\/i" RE-MATCH NOT добавить знак * перед /i то все работает. Это радует, но работает при условии, что в имени директории нет пробелов, как только появляются пробелы, директория удаляется полностью. Подскажите, пожалуйста, как должна выглядеть строка с учетом пробелов в имени директории
gdavydov
 
Posts: 5
Joined: Fri, 23 Dec 2011, 10:11


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 4 guests