![]() |
Побайтовое сравнение двух файлов
Всем добрый день. Задачка такова, необходимо побайтово сравнить два файла. Реализовать необходимо либо в VBS-е, либо в JS. Т.к. я новичок в этом деле, может кто сможет помочь с кодом, буду очень признателен.
|
korenza, что нужно получить в результате?... список различий или только True/False?
|
amel27, Добрый день, пока ждал подсказки, наваял на JS, вот такого плана
Код:
CompareFiles() Сейчас, если в качестве первого аргумента введен несуществующий файл, то в консоли выдается сообщение, что файла +Args.Item(0)+ нет на диске, если же введен в качестве второго аргумента несуществующий файл, то выдается сообщение, что файла +Args.Item(0)+ нет. Как бы сделать так, чтобы выводилось сообщение об отсутствии либо 2-х файлов сразу (если их действительно нет), либо первого, либо второго, в зависимости от заданных аргументов коммандной строки. |
korenza, на JS с VBS перестраиваться не буду, для проверки существования используйте метод FileExists объекта "Scripting.FileSystemObject" и свойство Args.Count для перебора параметров
|
amel27, Ок, без проблем, но если незатруднительно, можете скинуть код бинарного сравнения файлов на VBS, результат True/False, без лишних проверок?
|
korenza, примерно так:
Код:
Set oFSO = CreateObject("Scripting.FileSystemObject") |
amel27, Спасибо за код. Просто хочу научиться скриптить и на VBS. Только при сравнении файлов всегда возвращается -1, даже если они идентичны.?
|
korenza, -1 это как раз совпадение, т.е. "истина" (vbTrue), 0 - "ложь" (vbFalse)
|
Когда файлы различны, тоже выдает -1
|
korenza, гм... странно, у меня вроде правильно выдает... по сути это вариация на тему вашего же поста #3
попробуйте другим способом: Код:
Set FSO = CreateObject("Scripting.FileSystemObject") |
кстати, так тоже вроде работает:
Код:
Set FSO = CreateObject("Scripting.FileSystemObject") |
Теперь, только "0" выдает, в любом случае, если одинаковые и если разные.!?
Загадочный скрипт, теперь Ваш первый выдает всегда "0", если файлы одинаковые и если разные.? |
Цитата:
Код:
Set FSO = CreateObject("Scripting.FileSystemObject") Цитата:
|
Немного модифицировал ваш скрипт для своих нужд. А именно если файлы разные то выполняется действие по запуску батника и записи в лог. Если файлы одинаковые то ничего не запускается. Я пока нуб в vbs, только пытаюсь организовать автоматизацию в своей работе. Поэтому пришлось немного посидеть поразбираться в функциях и синтаксисе.
Вообщем вот мой переделанный вариант: Код:
Set FSO = CreateObject("Scripting.FileSystemObject") Этот пример очень помог в реализации "мега-проекта" :) Нужно убрать в строке If iZ1<>iZ2 Then Exit Function непосредственно выход из функции "Exit Function", таким образом проверка идет дальше. Также можно убрать строку If StrComp(sF1,sF2,0)=0 Then FileCompare=False чтобы не перезаписывалась переменная FileCompare. Я пока не понял зачем она нужна. |
можеты быть просто вызывать
Код:
c:\Windows\System32\fc.exe /? |
Время: 01:51. |
Время: 01:51.
© OSzone.net 2001-