|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Побайтовое сравнение двух файлов |
|
VBS/WSH/JS - Побайтовое сравнение двух файлов
|
Новый участник Сообщения: 25 |
Всем добрый день. Задачка такова, необходимо побайтово сравнить два файла. Реализовать необходимо либо в VBS-е, либо в JS. Т.к. я новичок в этом деле, может кто сможет помочь с кодом, буду очень признателен.
|
|
Отправлено: 09:55, 08-06-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Теперь, только "0" выдает, в любом случае, если одинаковые и если разные.!?
Загадочный скрипт, теперь Ваш первый выдает всегда "0", если файлы одинаковые и если разные.? |
Отправлено: 09:21, 11-06-2010 | #12 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата korenza:
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
|
Профиль | Отправить 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
|
Профиль | Отправить 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|