Я использую Sigcheck для проверки MachineType исполняемого файла (MSACCESS.EXE)
Если Сигчек говорит, что MachineType исполняемого файла 32-битный GOTO ...
Если Сигчек говорит, что MachineType исполняемого файла 64-битный GOTO ...
Как это можно написать? Выходные данные Sigcheck.exe в терминале:
c:\program files (x86)\microsoft office\office16\MSACCESS.EXE:
Verified: Signed
Signing date: 9:51 AM 1/23/2019
Publisher: Microsoft Corporation
Company: Microsoft Corporation
Description: Microsoft Access
Product: Microsoft Office 2016
Prod version: 16.0.4813.1000
File version: 16.0.4813.1000
MachineType: 32-bit
UPDATE:
Это вывод, который я получаю
Подробнее:
Использование Sigcheck.exe
Сначала я запускаю следующий пакетный скрипт:
@echo off
sigcheck.exe "C:\Program Files (x86)\Microsoft Office\Office16\MSACCESS.EXE"
Вслед за тем, что вы сказали:
Set TestPath=%1
for /F "delims=" %%l in ('sigcheck %TestPath%^|findstr MachineType') do set ArchLine=%%l
if not "%ArchLine%"=="%ArchLine:64=%" echo The file is 64bit
if not "%ArchLine%"=="%ArchLine:32=%" echo The file is 32bit
Не может быть двух ответов 32 / 64bit, так как я указываю только на 1 файл.
Так что в этом случае следует только сказать «Файл 32-битный»
ОБНОВЛЕНИЕ 2:
@echo off
sigcheck.exe "c:\program files (x86)\microsoft office\root\office16\MSACCESS.EXE"
Set TestPath=%1
:: See if sigcheck is in the path
where sigcheck.exe 2>NUL 1>NUL
if not "%ERRORLEVEL%"=="0" echo sigcheck.exe is not in your path && PAUSE
:: Make sure the file exists
if not exist "%TestPath%" echo %TestPath% does not exist && PAUSE
for /F "delims=" %%l in ('sigcheck %TestPath%^|findstr MachineType') do set ArchLine=%%l
if not "%ArchLine%"=="%ArchLine:n/a=%" echo Not an executable file && PAUSE
if not "%ArchLine%"=="%ArchLine:64=%" echo 64bit
if not "%ArchLine%"=="%ArchLine:32=%" echo 32bit
Ниже приводится полный ответ, который я получаю:
Sigcheck v2.72 - File version and signature viewer Copyright (C)
2004-2019 Mark Russinovich Sysinternals - www.sysinternals.com
c:\program files (x86)\microsoft office\root\office16\MSACCESS.EXE:
Verified: Signed
Signing date: 6:18 AM 3/6/2019
Publisher: Microsoft Corporation
Company: Microsoft Corporation
Description: Microsoft Access
Product: Microsoft Office
Prod version: 16.0.11328.20158
File version: 16.0.11328.20158
MachineType: 32-bit does not exist Press any key to continue . . .