Немного модифицировал ваш скрипт для своих нужд. А именно если файлы разные то выполняется действие по запуску батника и записи в лог. Если файлы одинаковые то ничего не запускается. Я пока нуб в 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 iZ1iZ2 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 iZ1iZ2 Then Exit Function непосредственно выход из функции "Exit Function", таким образом проверка идет дальше.
Также можно убрать строку If StrComp(sF1,sF2,0)=0 Then FileCompare=False чтобы не перезаписывалась переменная FileCompare. Я пока не понял зачем она нужна.