Пакетный файл для проверки, является ли установленная программа 64-битной или 32-битной? - PullRequest
0 голосов
/ 28 марта 2019

Как мне создать командный файл, который сообщает, является ли установленная программа (.exe) 32- или 64-битной?

Иногда вы можете определить, в какой папке находится файл program.exe.

Если установленная программа является 32-разрядной, она отобразится в папке Program Files (x86). Если файл 64-битный, он появится в папке Program Files.

Но это не всегда так ...

Например, Google Chrome всегда отображается в Program Files x86

Chrome в программных файлах x86

Но на моем компьютере установлена ​​64-битная версия:

Хром на самом деле 64 бит

Как я могу сослаться, например, на chrome.exe, и пакетный режим подскажет, является ли он 64- или 32-битным?

1 Ответ

0 голосов
/ 28 марта 2019

Этот скрипт сделает свое дело: Определение 16-разрядных, 32-разрядных и 64-разрядных исполняемых файлов с помощью PowerShell

Если вы называете это из powershell : «Source» (он же) запускает скрипт один раз, чтобы получить функцию в память, затем вы можете просто использовать ее ..

    . .\Get-ExecutableType.ps1 #sources the script
    Get-ExecutableType -Path C:\Windows\System32\notepad.exe #runs the function

Чтобы назвать этот скрипт "простым способом" из пакетного файла , добавьте его в конец скрипта после последней фигурной скобки:

    Get-ExecutableType -Path $args[0]

И назовите это так:

powershell -command "& .\Get-ExecutableType.ps1 X:\Your.exe"

Другие опции:

Вы также можете использовать добавленные «пакетные строки» для вызова его из powershell без предварительного извлечения файла.

Вы также можете использовать глупый синтаксис powershell для вызова функции без предварительного извлечения файла. powershell.exe -c "& {[script_file] [params]; [имя_функции]}"

...