1 (изменено: Крепыш, 2013-07-12 09:46:06)

Тема: VBS/JS: узнать версию файла на сетевом компьютере

Скрипт выводит версию файла:

Set FileName = "C:\\Windows\\notepad.exe"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set colFiles = objWMIService.ExecQuery("Select * from CIM_Datafile Where Name = '" & FileName  & "'")
For Each objFile in colFiles
  WScript.Echo "Version: " & objFile.Version
Next

Как вывести версию файла на сетевом компьютере, задав его IP-адрес?

2

Re: VBS/JS: узнать версию файла на сетевом компьютере

Крепыш
Речь про файл на сетевом диске? Если да, то:

F = "//<ip-адрес:>/<путь к файлу>"
With CreateObject("Scripting.FileSystemObject")
  Set D = .GetDrive(.GetDriveName(F)) 
  Col   = InStr(F, ":")
  If D.DriveType = 3 And Col Then F = D.ShareName & Mid(F, Col + 1)
  MsgBox "Version: " & .GetFileVersion(F)
End With

3 (изменено: Dmitrii, 2013-07-12 07:17:57)

Re: VBS/JS: узнать версию файла на сетевом компьютере

FileName = "C:\\Windows\\notepad.exe"
strIP = "192.168.0.1"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strIP & "\root\CIMV2")
Set colFiles = objWMIService.ExecQuery("Select * from CIM_Datafile Where Name='" & FileName  & "'")
For Each objFile in colFiles
  WScript.Echo "Version: " & objFile.Version
Next

4 (изменено: Крепыш, 2013-07-12 09:55:07)

Re: VBS/JS: узнать версию файла на сетевом компьютере

Dmitrii,
ругается при попытке создать объект, видимо прав не хватает:

Разрешение отклонено: 'GetObject'

Flasher,
чё-то я пошёл сложным путём, не знал, что есть функция GetFileVersion()

FileName - путь к файлу в расшаренной папке

FileName = "\\<ip-адрес:>\<путь к файлу>"
MsgBox "Version: " & CreateObject("Scripting.FileSystemObject").GetFileVersion(FileName)

5

Re: VBS/JS: узнать версию файла на сетевом компьютере

Крепыш пишет:

... видимо прав не хватает

Именно так.

6

Re: VBS/JS: узнать версию файла на сетевом компьютере

Теперь вот такая задачка: есть путь к файлу:

FileName = "\\IP\Share\Folder\...\File",
где
IP - IP-адрес компьютера,
Share - имя расшаренного ресурса
Folder - имя папки в этом ресурсе
глубина вложенности может быть любой

Нужно вычленить путь к файлу без первых трёх элементов, т.е.:

Name = "...\File"
Подскажите, пожалуйста! А то сам не соображу.

7 (изменено: Крепыш, 2013-07-12 12:53:41)

Re: VBS/JS: узнать версию файла на сетевом компьютере

Сделал с помощью рег. выражения. Код на JScript:

Name = FileName.match(/\\\\.+?\\.+?\\.+?\\(.+)?/)[1]

8

Re: VBS/JS: узнать версию файла на сетевом компьютере

Крепыш, во-первых, не превращаем тему в чат: один вопрос — одна тема. Во-вторых, для решения указанного вопроса есть метод «.GetFileName()» объекта «Scripting.FileSystemObject».

9

Re: VBS/JS: узнать версию файла на сетевом компьютере

alexii >

Крепыш пишет:

глубина вложенности может быть любой
...без первых трёх элементов...

10

Re: VBS/JS: узнать версию файла на сетевом компьютере

Flasher, не доглядел.