Удаление одинаковых файлов (по MD5/размеру)

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

Re: Удаление одинаковых файлов (по MD5/размеру)

Postby SeMa » Wed, 10 Oct 2012, 17:29

Moriturus wrote:
SeMa wrote:1. (это к Moriturus точно) если в каталоге с уже "почищеными" файлами запустить задачу повторно (а удалять нечего!), то после отработки остаётся зелёный хинт.

Это связано с тем, что у вас в каталоге осталось мало файлов, и поиск проходит слишком быстро, хинтовые слова не успевают отработать.
Т.е. HINT-OFF срабатывает раньше, чем закончит выполнение HINT ? Так бывает?

Moriturus wrote:
SeMa wrote:2. (будет время -- посмотрю внимательней) файлов-"оригиналов" почему-то стало меньше.

Не сталкивался.
Похоже, я ошибся. Из полтора десятка тестов с одними и теми же файлами воспроизвести не удалось. Скорее всего, это было связано с поиском по размеру.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Удаление одинаковых файлов (по MD5/размеру)

Postby Morituruz » Wed, 10 Oct 2012, 18:05

SeMa wrote:Т.е. HINT-OFF срабатывает раньше, чем закончит выполнение HINT ? Так бывает?

Так ведь HINT запускает приложение tm.exe и записывает куда-то там его PID, так что это не самый быстрый процесс и зависит от системы.
Если файлов немного, и производится проверка по размеру, то это займёт совсем немного времени, tm.exe не успеет запуститься. Соответственно там, где HINT-OFF берёт PID будет ещё пусто.
Эта задача всё же для работы с большим количеством файлов, для небольшого количества прекрасно подойдёт поиск в total commander (или аналог):
Image
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Удаление одинаковых файлов (по MD5/размеру)

Postby SeMa » Thu, 11 Oct 2012, 17:54

Временный файл со списком дубликатов не удаляется.
Решил сделать удаление, но где-то допустил ошибку. Помогите.

Чтобы не плодить массивы, создал переменную:
2VARIABLE tmp_file
В блоке вывода списка вначале tmp_file сбрасывается, а затем в неё записывается адрес с названием временного файла:
Code: Select all
...
" Уникальных %ddm_name COUNT% файлов: %list_of_md5# N>S%|nКопий: %list_of_duplicate_files# N>S%|nВывести список?"
DROP 0 MessageBoxA 6 =
IF
   0 tmp_file 2!       \ обнуление переменной временного файла
   S" TEMP" ENV 2DUP DUP 1 - /STRING S" \" COMPARE
   IF
      \ на случай, если в системной переменной нет обратной черты:
      S" \" S+
   THEN
   TempFile S+ S" .txt" S+
   2DUP tmp_file 2!       \ сохранение адреса с именем временного файла в переменной
   ""
...

В конце задачи (после всех действий) проверяется наличие временного файла по переменной. Если он есть, то удаляется, хотя уже открыт в блокноте (последняя попытка после проверок открытого окна блокнота с этим файлом).
Code: Select all
...
list_of_duplicate_files LIST-FREE

\ удаление временного файла (если он есть)
tmp_file 2@ D>S
IF
    \ BEGIN
        \ 2000 PAUSE
        \ tmp_file 2@ S" *" S+ WIN-EXIST?
    \ UNTIL
    tmp_file 2@ FDELETE
THEN
)#

Даже в таком варианте возникает ошибка стека.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Удаление одинаковых файлов (по MD5/размеру)

Postby Morituruz » Thu, 11 Oct 2012, 18:51

SeMa wrote:Чтобы не плодить массивы, создал переменную

а какая принципиальная разница что плодить, массивы или переменные?

Тут два нолика ведь надо:
SeMa wrote:0 0 tmp_file 2!       \ обнуление переменной временного файла


А ещё nncron сам всё сохраняет в слове PrevTempFile, так что можно и как-то так:
Code: Select all
list_of_md5 LIST-FREE
list_of_duplicate_files LIST-FREE
QUERY: "Удалить тектовый файлик?"
IF
   S" TEMP" ENV PrevTempFile S+ S" .txt" S+ FDELETE
THEN


Хотя я пользуюсь этим и не озабочиваюсь какими-то там файликами :)
Code: Select all
<%
: TEMP_FOLDER
\ временная папка
S" TEMP" ENV 2DUP DUP 1 - /STRING S" \" COMPARE
IF
   \ на случай, если в системной переменной нет обратной черты:
   S" \" S+
THEN
;
%>
#( CLASSIC-TASK-#-Purge_temp_folder_daily
Time: 5 0
NoLog
SingleInstance
Action:
RECURSIVE WITHDIRS
TEMP_FOLDER S" *" S+ -1 PURGE-OLD
)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Удаление одинаковых файлов (по MD5/размеру)

Postby SeMa » Sat, 13 Oct 2012, 17:34

Moriturus wrote:
SeMa wrote:Чтобы не плодить массивы, создал переменную

а какая принципиальная разница что плодить, массивы или переменные?
По-моему, обработка массивов занимает больше операций.

Moriturus wrote:Тут два нолика ведь надо:
SeMa wrote:0 0 tmp_file 2!       \ обнуление переменной временного файла
Да, элементарные вещи... Поэтому и ошибка стека!

Moriturus wrote:А ещё nncron сам всё сохраняет в слове PrevTempFile, так что можно и как-то так:
Code: Select all
list_of_md5 LIST-FREE
list_of_duplicate_files LIST-FREE
QUERY: "Удалить тектовый файлик?"
IF
   S" TEMP" ENV PrevTempFile S+ S" .txt" S+ FDELETE
THEN
А если в это время создадутся другие временные? Или в каждом потоке свои временные файлы?

Moriturus wrote:Хотя я пользуюсь этим и не озабочиваюсь какими-то там файликами :)
Не люблю, когда прога оставляет мусор.
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Удаление одинаковых файлов (по MD5/размеру)

Postby VoidVolker » Sat, 13 Oct 2012, 20:30

SeMa wrote:
Moriturus wrote:а какая принципиальная разница что плодить, массивы или переменные?
По-моему, обработка массивов занимает больше операций.

При современных вычислительных мощностях увидеть разницу между работой с массивом или переменной практически невозможно. Оно становится заметно на миллионах операций. Большие массивы(сотни кб и болеее) по CREATE не стоит делать, т.к. создаются они в кодофайле, а он - не резиновый и свободный объем составляет около 600 кб.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Previous

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest

cron