Показать полную графическую версию : [решено] Определение версии файла
Добрый день!
Прошу вашей помощи.
Необходимо добавить в существующий скрипт при входе в винду след. функцию:
Проверяется файл по пути с:\\хх\х.ехе
Если файл не существует то шлем письмо админу "файл не найден"
Если его версия не равна 1.1 то шлем письмо админу "версии не совпадают"
cause, примерно так, выделенные значения необходимо заменить на свои:
Set WS = CreateObject("WScript.Shell")
Set FSO= CreateObject("Scripting.FileSystemObject")
sCompName = WS.ExpandEnvironmentStrings("%ComputerName%")
sUserName = WS.ExpandEnvironmentStrings("%UserName%")
sFile = "с:\хх\х.ехе"
sTo = "adm@srv.com"
sFrom = "monitor@srv.com"
sSubj = "Monitor: "& sUserName &" ["& sCompName &"]"
If FSO.FileExists(sFile) Then
If FSO.GetFileVersion(sFile) <> "1.1" Then
SendMail sTo, sFrom, sSubj, "версии не совпадают"
End If
Else
SendMail sTo, sFrom, sSubj,"файл не найден"
End If
Sub SendMail(sTo, sFrom, sSubj, sText)
Dim oEmail:Const sCfg = "http://schemas.microsoft.com/cdo/configuration/"
Set oEmail = CreateObject("CDO.Message")
oEmail.Configuration.Fields.Item(sCfg &"smtpserver") = "smtp.dom.local"
oEmail.Configuration.Fields.Item(sCfg &"sendusername") = "monitor"
oEmail.Configuration.Fields.Item(sCfg &"sendpassword") = "password"
oEmail.Configuration.Fields.Item(sCfg &"smtpserverport") = 25
oEmail.Configuration.Fields.Item(sCfg &"smtpauthenticate")= cdoBasic
oEmail.Configuration.Fields.Item(sCfg &"sendusing") = 2
oEmail.Configuration.Fields.Update
oEmail.To = sTo :oEmail.From = sFrom
oEmail.Subject = sSubj:oEmail.Textbody= sText
oEmail.Send
End Sub
Спасибо работает!
Еще 2 вопросика
1. А если надо определить имеет ли файл заданный размер Например файл должен иметь размер 255 байт?
2. Если надо проверять файл по пути используя стандартные виндовские среды то это должно выглядеть так:
sFile = "%SYSTEMROOT%\хх\х.ехе"
sFile = "%program files%\хх\х.ехе"
1.If FSO.FileExists(sFile) Then
If FSO.GetFileVersion(sFile) <> "1.1" Then
SendMail sTo, sFrom, sSubj, "версии не совпадают"
End If
If FSO.GetFile(sFile).Size <> 255 Then
SendMail sTo, sFrom, sSubj, "размер не совпадает"
End If
Else
SendMail sTo, sFrom, sSubj,"файл не найден"
End If
2.sFile = WS.ExpandEnvironmentStrings("%SystemRoot%")& "\хх\х.ехе"
sFile = WS.ExpandEnvironmentStrings("%ProgramFiles%")& "\хх\х.ехе"
подскажите как поправить кусок cmd скрипта что бы
во второй и третьей строчке получить версию файла
FOR /F "tokens=1* usebackq" %%a IN (`""filever.exe" /V "%programfiles%\1cv82\common\1cestart.exe" | FIND "FileVersion""`) DO SET ver1c=%%a
xcopy \\s680000file\all\1c\namedecl.dll "%programfiles%\1cv82\ver1c\bin\" /y
regsvr32 /s "%programfiles%\1cv82\ver1c\bin\namedecl.dll"
получилось скопировать вот так:
for /f "tokens=1,2 delims= " %%i in ('filever.exe /v "%programfiles%\1cv82\common\1cestart.exe"^|find.exe /i "FileVersion"') do set %%i=%%j
xcopy \\s680000file\all\1c\namedecl.dll "%programfiles%\1cv82\%FileVersion%\bin\" /y
regsvr32 /s "%programfiles%\1cv82\%FileVersion%\bin\namedecl.dll"
но как поменять переменную FileVersion скажем на ver1c , что бы избежать в дальнейшем при выполнении скрипта проблем ?
batyaPS, поясните подробнее Вашу хотелку, учитывая, что не у всех есть 1Cv8.
batyaPS, поясните подробнее Вашу хотелку, учитывая, что не у всех есть 1Cv8. »
да просто нужно объявить переменную скажем %ver1c% вместо %FileVersion% которая так же будет выводить версию файла, что дальше в скрипте можно было её использовать и не пересекать с другими задачами.
т.е. мне надо что бы строка regsvr32 /s "%programfiles%\1cv82\%FileVersion%\bin\namedecl.dll"
работа вот так regsvr32 /s "%programfiles%\1cv82\%ver1c%\bin\namedecl.dll"
да просто нужно объявить переменную скажем %ver1c% вместо %FileVersion% которая так же будет выводить версию файла, »
Зачем? Какая разница?
дальше в скрипте можно было её использовать и не пересекать с другими задачами. »
Не пересекайте:
setlocal /?
endlocal /?
endlocal /? »
я понял, что это команда отключает ранее созданные переменные, но как в данном случае скомандовать на отключение переменной %FileVersion%
«setlocal» — до, и «endlocal» — после.
Народ, а как получить версию файла в Интернете без собственно закачки файла?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.