Определение версии файла
Добрый день!
Прошу вашей помощи.
Необходимо добавить в существующий скрипт при входе в винду след. функцию:
Проверяется файл по пути с:\\хх\х.ехе
Если файл не существует то шлем письмо админу "файл не найден"
Если его версия не равна 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.
|
Цитата:
Цитата Iska
batyaPS, поясните подробнее Вашу хотелку, учитывая, что не у всех есть 1Cv8. »
|
да просто нужно объявить переменную скажем %ver1c% вместо %FileVersion% которая так же будет выводить версию файла, что дальше в скрипте можно было её использовать и не пересекать с другими задачами.
т.е. мне надо что бы строка regsvr32 /s "%programfiles%\1cv82\%FileVersion%\bin\namedecl.dll"
работа вот так regsvr32 /s "%programfiles%\1cv82\%ver1c%\bin\namedecl.dll"
|
Цитата:
Цитата batyaPS
да просто нужно объявить переменную скажем %ver1c% вместо %FileVersion% которая так же будет выводить версию файла, »
|
Зачем? Какая разница?
Цитата:
Цитата batyaPS
дальше в скрипте можно было её использовать и не пересекать с другими задачами. »
|
Не пересекайте:
Код:
setlocal /?
endlocal /?
|
я понял, что это команда отключает ранее созданные переменные, но как в данном случае скомандовать на отключение переменной %FileVersion%
|
«setlocal» — до, и «endlocal» — после.
|
Народ, а как получить версию файла в Интернете без собственно закачки файла?
|
Время: 19:14.
© OSzone.net 2001-