Cmd узнать версию программы

Содержание
Читайте также:
Как перевести программу Телеграмм на русский

Отображает номер версии операционной системы. Эта команда поддерживается в командной строке Windows (Cmd.exe), но не поддерживается ни в одной из версий PowerShell.

Синтаксис

Параметры

Параметр Description
/? Отображение справки в командной строке.

Примеры

Чтобы получить номер версии операционной системы из командной оболочки (cmd.exe), введите:

Если вы хотите получить номер версии операционной системы через Windows PowerShell, введите:

$PSVersionTable.BuildVersion

Если вы хотите получить номер версии операционной системы с помощью PowerShell 7.x.x, введите следующее:

$PSVersionTable.OS

Связанные ссылки

Источник: learn.microsoft.com

Узнать версию исполняемого файла

Чтобы узнать версию исполняемого файла , нужно открыть окно командной строки в Windows 7 / Windows Server 2008 и ввести следующую строку:

Как узнать, какая Windows на компьютере? Проверяем версию Виндовс

wmic datafile where name=’c:\windows\system32\mstsc.exe’ get version
Version
6.1.7601.17514 — версия RDP клиента

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником — ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог — это шпаргалка онлайн.

Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору.

Похожая запись

Контроль за удалением неактуальных бекапов

Фев 12, 2017 ekzorchik

Резервное копирование файловой базы 1C Предприятие

Июн 21, 2016 ekzorchik

Отключить запрос на восстановление системы

Июн 6, 2016 ekzorchik

Архивы
Рубрики

You missed

Превью контента приватного доступа

Вытягивание изменения из репозитария Mercurial

Недовольство интернет провайдером от ТК Мотел

Настройка IPMI сервера SuperMicro через VLAN

Реальные заметки Ubuntu https://www.ekzorchik.ru/2013/01/windows-7-get-version-file/» target=»_blank»]www.ekzorchik.ru[/mask_link]

Узнать версию установленной программы из пакетного файла

у нас есть пакетный файл, который устанавливает несколько программ в рамках установки разработчиков. Это выполняется периодически, когда мы получаем новые версии используемых компонентов. Поэтому было бы неплохо установить, если версии разные.

в командной строке я могу запустить это и вернуть установленную версию:

wmic datafile where name=’C:Program Files (x86)Common FilesCompanyProductVersion12Product.exe’ get version /format:list

который дает выход Version=12.1.369.0 .

Версия файла несовместима с версией Windows — решение

однако, когда я помещаю это в пакетный файл, подобный этому, и пытаюсь извлечь версия:

echo off FOR /F «tokens=2 delims==» %%I in (‘»wmic datafile where^(name^=»C:Program Files (x86)Common FilesCompanyProductVersion12Product.exe» get version /format:list»‘) DO (SET «RESULT=%%I») ECHO %RESULT%

Я получаю ответ Common was unexpected at this time.

некоторые части могут быть избыточными, поскольку я пробовал вещи из сети, чтобы исправить это.

что я пропустила?

автор: graham.reeds

5 ответов

у вас есть набор неуместных двойных кавычек, а также дополнительный ( .

WMIC использует синтаксис SQL, а строки заключены в одинарные кавычки.Внутренние одинарные кавычки не мешают команде, заключающей одинарные кавычки.

вы можете поместить двойные кавычки вокруг предложения WHERE (не включая ключевое слово WHERE), чтобы избежать некоторых проблем с escape в предложении for DO ().

но это может быть не совсем все решение. Ты не видишь этого. с вышеуказанным кодом, но результат фактически содержит возврат завершающей каретки (0x0D). Это связано с причудой с тем, как FOR /F обрабатывает вывод wmic unicode. Каждая строка вывода WMIC будет иметь дополнительный возврат трейлинг-каретки.

пока вы всегда получаете доступ к результату с помощью %RESULT% (нормальное расширение), тогда у вас не будет никаких проблем. Но если вам когда-либо понадобится отложенное расширение, у вас могут возникнуть проблемы, как показано ниже.

один удобный способ для удаления нежелательного возврата каретки необходимо использовать дополнительный уровень FOR.

автор: dbenham

вот подпрограмма, которую я использую для этого в моем собственном пакетном скрипте обновления программного обеспечения:

он может получить любой атрибут файла, поддерживаемый wmic datafile get . Например, вот как вы можете получить версию файла для установленного Adobe Reader:

call :getfattr version «%ProgramFiles(x86)%AdobeReader 11.0ReaderAcroRd32.exe» echo «!version!»

после этого переменная среды version будет содержать запрошенную строку версии. Если :getfattr не, version гарантированно будет unset.

трассировка выполнения теста для этого пример выглядит так (отложенное расширение уже включено, хотя это не предполагается :getfattr):

как вы можете видеть, это довольно прямо и не слишком много. Тем не менее, он на цыпочках проходит через минное поле cmd и wmic подводных камней.

во-первых, имя атрибута, который вы хотите получить, также является именем, используемым для переменной, в которой вы хотите получить результат ( version в тесте выше). Внутри подпрограммы это имя %1 , так что set %1= очищает его.

имя файла, которое вы передаете, нуждается в предварительной обработке, прежде чем его можно будет безопасно передать wmic и для этого требуется переменная оболочки, поэтому setlocal выдается, чтобы избежать топтания переменных вызывающего абонента.

set «name=%~f2» копирует имя в переменную среды после удаления всех окружающих двойных кавычек и расширения его до полного пути. Двойные кавычки окружают весь set аргумент для предотвращения горя, вызванного амперсандами или круглые скобки в именах путей.

wmic запросы используют SQL-подобный синтаксис, где строковые значения окружены одинарной кавычкой ‘ символы и — это побег, который подавляет любое особое значение следующего символа. Поскольку оба они являются законными в именах путей Windows, все вхождения либо нуждаются в префикс. set «name=%name:=%» escapes встроенные обратные косые черты и ‘%name:’=’%’ построить в wmic командная строка экранирует встроенные одинарные кавычки и добавляет требуются окружающие.

cmd парсер не отключает специальную обработку между одинарными кавычками, и имя больше не имеет никаких окружающих двойных кавычек, поэтому встроенные пробелы, круглые скобки или амперсанды могут потенциально нарушать вещи. Чтобы защититься от этого, wmic всю name= аргумент получает двойную кавычку. Нет необходимости в специальной обработке для двойных кавычек уже внутри имени, потому что двойные кавычки are запрещено в именах файлов Windows так их не может быть.

что груз состоит из трех разделенных команд, которые for будет расширяться как одна командная строка перед cmd получает для обработки отдельных команд. В частности, это означает, что set «%%B» расширяется до endlocal выполняется, что ставит переменную, созданную этим set за пределами setlocal / endlocal объем и делает его доступным для абонента.

%%B всегда будет расширяться в формате name=value из-за /format:list переключатель перешел в wmic ; имя будет таким же, как указано в get глагол, и вот как имя, которое вы передаете, в конечном итоге выбирает переменную, которую вы возвращаете. Весь name=value до set цитируется в случае, если запрошенный атрибут содержит специальные символы оболочки. Это делает: getfattr безопасным, но вы можете использовать !отложено! расширение, а не % преждевременное % расширение везде, где вы на самом деле используйте переменную, которую он возвращает вам.

на tokens=1 eol= » %%A in (‘wmic datafile where name^=»%file%» get version^|findstr /i /v /c:»version»‘) do set a=%%A %file%» get version|findstr /i /v /c:»version»>test.txt

возможно, это может сработать

set filepath=%~f1 set file=%filepath:=% for /f «tokens=1 eol= » %%A in (‘wmic datafile where name^=»%file%» get version^|findstr /i /v /c:»version»‘) do if not «»==%%A set a=%%A tokens=1 eol= » %%A in (‘wmic datafile where name^=»%file%» get version^|findstr /i /v /c:»version»^|findstr /i /v /r «^$»‘) do set a=%%A %file%» get version|findstr /i /v /c:»version»|findstr /i /v /r «^$»>test.txt
автор: Noodles

вот альтернативный метод, обходит WMIC для powershell Get-WmiObject.

возвращает этот результат при двойном щелчке a .пакетный файл cmd.

Version ——- 0.0.0.0
автор: Knuckle-Dragger

и два способа без внешних инструментов 1.WMIC

WMIC DATAFILE WHERE name=»C:install.exe» get Version /format:Textvaluelist

обратите внимание на двойные слэши в имени файла.

2.MAKECAB поскольку WMIC не установлен на домашних версиях windows, вот способ с makecab, который будет работать на каждой машине windows:

пример вывода (он имеет строковую версию, которая является небольшим дополнением к методу wmic:)):

c:> fileinfo.bat /l C:install.exe file:install.exe date:11/07/07 size:562688 csum:380ef239 time:07:03:18a vern:9.0.21022.8 vers:9.0.21022.8 built by: RTM lang:1033

3 используя shell.применение и гибридный пакетjscript.Вот!—6—>tooptipInfo.летучая мышь!—7—> :

используется против cmd.exe:

C:WindowsSystem32cmd.exe : File description: Windows Command Processor Company: Microsoft Corporation File version: 6.3.9600.16384 Date created: ?22-?Aug-?13 ??13:03 Size: 347 KB

Источник: askdev.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru