Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Запуск программы в зависимости от архитектуры Windows

Случается, что в каталоге программы или двух её подкаталогах расположены 2 версии - 32-х и 64-хбитной разрядности. Посему для оптимальной работы желателен запуск (в т.ч. с параметрами) в соответствии с архитектурой текущей системы. Следующий VBS-скрипт решает эту задачу.

'===================================== VBS =====================================
' Запустить программу с параметрами в зависимости от архитектуры Windows (32/64)

' Примечание: Eсли при запуске из x64-системы в папке с <Prog>.exe не окажется
' <Prog>64.exe, то для запуска будет выбран файл <папка-родитель>64\<Prog>.exe

' Параметры: "<путь к 32-битной программе>" <не/скрывать:1/0> <ключи/параметры>
' Пример: "%%COMMANDER_PATH%%\Utils\Program\Program.exe" 1 param1 "param 2"
'===============================================================================
With WScript.Arguments
  C = .Count : Prog = .Item(0) : Hide = .Item(1)
  If C > 2 Then For i = 2 to C - 1 : P = P & " """ & .Item(i) & """" : Next
End With
With CreateObject("WScript.Shell")
  If .Environment("System")("PROCESSOR_ARCHITECTURE") <> "x86" Then Arch = 64
  If Arch Then
    Util = Left(Prog, Len(Prog) - 4) & Arch & Right(Prog, 4)
    With CreateObject("Scripting.FileSystemObject")
      If Not .FileExists(Util) Then _
      Util = .GetParentFolderName(Prog) & Arch & "\" & .GetFileName(Prog)
    End With
  Else Util = Prog End If : .Run """" & Util & """" & P, Hide
End With

Flasher
28.03.2016