Сравнить два бинарных файла?

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

Сравнить два бинарных файла?

Postby Crew » Tue, 16 Apr 2013, 07:48

День добрый.
Нужно как-то сравнить по содержимому (md5?) два файла с одинаковыми именами и при совпадении содержимого удалять один из них или переименовать один из них при различиях. Может кто-нибудь подсказать как это реализовать средствами nncron?


PS: Чертовски рад, что программа продолжает развиваться!
Crew
 
Posts: 41
Joined: Wed, 07 Mar 2007, 00:27

Re: Сравнить два бинарных файла?

Postby VoidVolker » Tue, 16 Apr 2013, 08:18

Code: Select all
S" C:\file1" FILE S" C:\file2" FILE COMPARE IF
  <... файлы не равны ...>
ELSE
  <... файлы равны ...>
THEN

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

Re: Сравнить два бинарных файла?

Postby Morituruz » Tue, 16 Apr 2013, 13:01

Попробуйте посмотреть на это:
viewtopic.php?f=5&t=12059
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Сравнить два бинарных файла?

Postby Crew » Tue, 16 Apr 2013, 20:00

VoidVolker wrote:
Code: Select all
S" C:\file1" FILE S" C:\file2" FILE COMPARE IF
  <... файлы не равны ...>
ELSE
  <... файлы равны ...>
THEN

Единственная особенность - оба файла загружаются в ОЗУ, так что надо быть аккуратнее с большими файлами и не удивляться соответствующим затратам ОЗУ.


Спасибо, сейчас попробую. Сравнивать мне нужно пары небольших файлов, так что сильно большой нагрузки не будет. :)

Moriturus wrote:Попробуйте посмотреть на это:
viewtopic.php?f=5&t=12059


Спасибо. Этот вариант я смотрел, однако мне действительно нужно сравнивать всего пару файлов по нескольким условиям. Так что этот вариант получается как в поговорке про пушки и воробьёв.
Crew
 
Posts: 41
Joined: Wed, 07 Mar 2007, 00:27

Re: Сравнить два бинарных файла?

Postby Crew » Wed, 17 Apr 2013, 01:19

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

:)
Crew
 
Posts: 41
Joined: Wed, 07 Mar 2007, 00:27

Re: Сравнить два бинарных файла?

Postby VoidVolker » Wed, 17 Apr 2013, 06:29

Пардон, опечатался. Поправил.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Сравнить два бинарных файла?

Postby Crew » Thu, 18 Apr 2013, 20:12

Почему-то не идёт сравнение двух файлов. Не могли бы вы глянуть где я накосячил?

Code: Select all
#( bin1
WatchFile: "U:\Users\Crew\Desktop\export\*.*"
Action:
    FOR-FILES: "U:\Users\Crew\Desktop\export\*.*"
   FILE-EXIST: "E:\My Documents\Pict\test\%CUR-DATE DATE>S%\%FOUND-FILENAME%"
   IF
          BALLOON: "test" "Файл уже существует. E:\My Documents\Pict\test\%CUR-DATE DATE>S%\%FOUND-FILENAME%"
        PAUSE: 6000
          FILE-APPEND: "E:\My Documents\Pict\test\test.log" "%crlf%%CUR-DATE DATE>S% - Файл уже существует. E:\My Documents\Pict\test\%CUR-DATE DATE>S%\%FOUND-FILENAME%"    
       
          S" U:\Users\Crew\Desktop\export\%FOUND-FILENAME%" FILE S" E:\My Documents\Pict\test\%CUR-DATE DATE>S%\%FOUND-FILENAME%" FILE COMPARE
         IF
           BALLOON: "test" "Файлы разные"
         ELSE
           BALLOON: "test" "Файлы одинаковые"
         THEN

     ELSE
       
        DIR-CREATE: "E:\My Documents\Pict\test\%CUR-DATE DATE>S%"
        CLIPBOARD: "http://crewdk.ru/test/%CUR-DATE DATE>S%/%FOUND-FILENAME%"
        FILE-MOVE: "%FOUND-FULLPATH%" "E:\My Documents\Pict\test\%CUR-DATE DATE>S%"
             BALLOON: "test" "Новая ссылка в буфере %CLIPBOARD%"
        FILE-APPEND: "E:\My Documents\Pict\test\test.log" "%crlf%%CUR-DATE DATE>S% - Новая ссылка в буфере %CLIPBOARD%"    
   THEN

       PAUSE: 6000
     BALLOON: "" ""
   ;FOR-FILES
)#


Даже если файлы заведомо разные и совпадают только имена (собственно по этому мне и нужна проверка), то всё равно скрипт заявляет, что файлы одинаковые. Что делать?
Crew
 
Posts: 41
Joined: Wed, 07 Mar 2007, 00:27

Re: Сравнить два бинарных файла?

Postby VoidVolker » Thu, 18 Apr 2013, 21:10

Все правильно. Ибо в данном случае:
Code: Select all
S" U:\Users\Crew\Desktop\export\%FOUND-FILENAME%" FILE S" E:\My Documents\Pict\test\%CUR-DATE DATE>S%\%FOUND-FILENAME%" FILE

На стеке остается две пустые строки. А две пустые строки всегда равны. А строки пустые, потому что файлов с такими именами не существует.
Code: Select all
S" U:\Users\Crew\Desktop\export\%FOUND-FILENAME%" EVAL-SUBST FILE S" E:\My Documents\Pict\test\%CUR-DATE DATE>S%\%FOUND-FILENAME%" EVAL-SUBST FILE

Смотрим описание механизма вычисления подстрок в мануале.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Сравнить два бинарных файла?

Postby Crew » Fri, 19 Apr 2013, 08:02

Да, спасибо. Так заработало.
Crew
 
Posts: 41
Joined: Wed, 07 Mar 2007, 00:27


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests