Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Побайтовое сравнение двух файлов

Ответить
Настройки темы
VBS/WSH/JS - Побайтовое сравнение двух файлов

Новый участник


Сообщения: 25
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем добрый день. Задачка такова, необходимо побайтово сравнить два файла. Реализовать необходимо либо в VBS-е, либо в JS. Т.к. я новичок в этом деле, может кто сможет помочь с кодом, буду очень признателен.

Отправлено: 09:55, 08-06-2010

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


кстати, так тоже вроде работает:

Код: Выделить весь код
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oF1 = FSO.GetFile("test1")
Set oF2 = FSO.GetFile("test2")

WScript.Echo FileCompare(oF1, oF2)

Function FileCompare(oF1, oF2)
  Dim oS, iZ1, iZ2, sF1, sF2
  iZ1=oF1.Size:iZ2=oF2.Size
  FileCompare=False

  If iZ1<>iZ2 Then Exit Function
  Set oS=oF1.OpenAsTextStream(1,0)
  sF1 = oS.Read(iZ1)
  Set oS=oF2.OpenAsTextStream(1,0)
  sF2 = oS.Read(iZ2)

  If StrComp(sF1,sF2,0)=0 Then FileCompare=True
End Function

Отправлено: 07:25, 11-06-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 25
Благодарности: 0

Профиль | Отправить PM | Цитировать


Теперь, только "0" выдает, в любом случае, если одинаковые и если разные.!?

Загадочный скрипт, теперь Ваш первый выдает всегда "0", если файлы одинаковые и если разные.?

Отправлено: 09:21, 11-06-2010 | #12


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата korenza:
только "0" выдает, в любом случае »
это уже подозрительно, даже в таком варианте?..
Код: Выделить весь код
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oF1 = FSO.GetFile(Wscript.ScriptFullName)
Set oF2 = FSO.GetFile(Wscript.ScriptFullName)

WScript.Echo FileCompare(oF1, oF2)
Цитата korenza:
Загадочный скрипт »
ничего загадочного - обычное чтение в переменную с последующим сравнением

Отправлено: 05:41, 14-06-2010 | #13


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Немного модифицировал ваш скрипт для своих нужд. А именно если файлы разные то выполняется действие по запуску батника и записи в лог. Если файлы одинаковые то ничего не запускается. Я пока нуб в vbs, только пытаюсь организовать автоматизацию в своей работе. Поэтому пришлось немного посидеть поразбираться в функциях и синтаксисе.
Вообщем вот мой переделанный вариант:

Код: Выделить весь код
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oF1 = FSO.GetFile("C:\Users\admin\Desktop\VBS\program_new.exe")
Set oF2 = FSO.GetFile("C:\Users\admin\Desktop\VBS\program_old.exe")


WScript.Echo FileCompare(oF1, oF2)

Function FileCompare(oF1, oF2)
  Dim oS, iZ1, iZ2, sF1, sF2
  iZ1=oF1.Size:iZ2=oF2.Size
  FileCompare=True

  If iZ1<>iZ2 Then 'Exit Function
  Set oS=oF1.OpenAsTextStream(1,0)
  sF1 = oS.Read(iZ1)
  Set oS=oF2.OpenAsTextStream(1,0)
  sF2 = oS.Read(iZ2)

  'If StrComp(sF1,sF2,0)=0 Then FileCompare=False
  	Set shell=createobject("wscript.shell")
	shell.run "C:\Users\admin\Desktop\VBS\Run.bat"
	Set shell=Nothing
	Set objFS = CreateObject("Scripting.FileSystemObject")
	Set objFile = objFS.OpenTextFile("C:\Users\admin\Desktop\VBS\script_log.log", 8, True)
	objFile.WriteLine "Install promt time: " & date & " " & time
	objFile.Close
	Set objFile = Nothing
	Set objFS = Nothing
  End If
 End Function
Замутил себе скрипт по загрузке инстала программы и его последующего сравнения. Если загруженная версия отличается от той которая уже есть то стартует батник по обновлению ПО на компах в сети.
Этот пример очень помог в реализации "мега-проекта"

Нужно убрать в строке If iZ1<>iZ2 Then Exit Function непосредственно выход из функции "Exit Function", таким образом проверка идет дальше.
Также можно убрать строку If StrComp(sF1,sF2,0)=0 Then FileCompare=False чтобы не перезаписывалась переменная FileCompare. Я пока не понял зачем она нужна.

Отправлено: 19:39, 14-07-2018 | #14


Старожил


Сообщения: 250
Благодарности: 51

Профиль | Отправить PM | Цитировать


можеты быть просто вызывать

Код: Выделить весь код
c:\Windows\System32\fc.exe /?
Compares two files or sets of files and displays the differences between
them


FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/u] [/W] [/nnnn]
   [drive1:][path1]filename1 [drive2:][path2]filename2
FC /B [drive1:][path1]filename1 [drive2:][path2]filename2

  /A         Displays only first and last lines for each set of differences.
  /B         Performs a binary comparison.
  /C         Disregards the case of letters.
  /L         Compares files as ASCII text.
  /LBn       Sets the maximum consecutive mismatches to the specified
             number of lines.
  /N         Displays the line numbers on an ASCII comparison.
  /OFF[LINE] Do not skip files with offline attribute set.
  /T         Does not expand tabs to spaces.
  /U         Compare files as UNICODE text files.
  /W         Compresses white space (tabs and spaces) for comparison.
  /nnnn      Specifies the number of consecutive lines that must match
             after a mismatch.
  [drive1:][path1]filename1
             Specifies the first file or set of files to compare.
  [drive2:][path2]filename2
             Specifies the second file or set of files to compare.

Отправлено: 17:18, 15-07-2018 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Побайтовое сравнение двух файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Сравнение двух файлов>ветвление "fc" или "diff" dARKest Скриптовые языки администрирования Windows 4 06-07-2009 23:02
Сравнение производительности двух ОС Dabaduch Хочу все знать 3 13-06-2009 19:27
Сравнение двух процов Rozmen Хочу все знать 4 03-08-2008 12:35
сравнение двух ноутбучных видеокарт X1700 и x2500 Sparkster Видеокарты 1 14-03-2008 13:07
сравнение двух массивов строк в Си bool Программирование и базы данных 5 04-05-2005 17:04




 
Переход