Как проверить расположение 32-битной папки Program Files в Windows .bat script - PullRequest
4 голосов
/ 19 мая 2010

Я хочу написать сценарий .bat, который работает под всеми версиями Windows, независимо от того, 32-разрядный или 64-разрядный.

В этом сценарии я хочу запустить файл file.exe.Этот файл находится в C: \ Program Files \ в 32-разрядных системах или в C: \ Program FIles (x86) \ в системах x64.Я могу написать:

"% ProgramFiles (x86)% \ file.exe" в 64-битных системах или "% ProgramFiles% \ file.exe" в 32-битных системах, но я хочу сделать скрипт универсальным.Есть ли способ определить этот путь универсально?

Ответы [ 5 ]

6 голосов
/ 19 мая 2010

Вы можете просто проверить его существование и сохранить путь;

@echo off & setLocal enabledelayedexpansion
if exist "C:\Program Files\app1.exe" (
 set PPATH="C:\Program Files\"
) else (
 set PPATH="C:\Program Files(x86)\"
)

start "" %PPATH%app1.exe
start "" %PPATH%app2.exe
start "" %PPATH%app3.exe
4 голосов
/ 05 августа 2011

VBS скрипт:

 set wshShell = createObject("WScript.Shell")  
    ''-----------------------------------    
    ''Get 32-bit program files path  
    ''-----------------  
    OsType = wshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")    
    If OsType = "x86" then  
            '''wscript.echo "Windows 32bit system detected"  
            strProgramFiles = wshShell.ExpandEnvironmentStrings("%PROGRAMFILES%")  
    elseif OsType = "AMD64" then  
            '''wscript.echo "Windows 64bit system detected"  
            strProgramFiles = wshShell.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%")  
    end if  
1 голос
/ 04 ноября 2013

Для простоты вы всегда можете сделать следующее:

cd %PROGRAMFILES%
cd %PROGRAMFILES(x86)%
Program.exe

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

1 голос
/ 19 мая 2010

Я думаю, что вместо файла "bat" вы должны использовать файл VBScript / JScript. Любой из этих сценариев может быть выполнен интерпретатором сценариев Windows (wscript.exe / cscript.exe). Среда сценариев и интерпретаторы доступны во всех разновидностях окон, поэтому не о чем беспокоиться. Вы можете найти примеры кода для обхода структуры каталогов, проверки наличия файлов и т. Д. С помощью VBScript. Вы можете использовать FileSystemObject Object по большей части.

1 голос
/ 19 мая 2010

"whereis" - это команда linux для этого, но доступен порт windows (я думаю, unxutils). Вы не получите путь без него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...