Windows

從 CMD.EXE 在 32 位和 64 位版本的 Vista/Windows 7 中查找應用程序的正確技術

  • March 31, 2021

背景

我有一個可以正常工作的現有 CMD 腳本。它像這樣從 PROGRAM FILES 啟動一個應用程序

"%PROGRAMFILES%\MyApp\app.exe" 

問題

  • 它適用於 32 位版本的 Windows(Vista、Windows 7)
  • 但在 64 位版本的 Windows 上,該應用程序將安裝到“程序文件(x86)”而不是“程序文件”(這在 32 位作業系統上會發生)

我在尋找什麼

  • 一個能穩健處理這兩種情況的腳本(即,它“做正確的事”取決於它所在的作業系統)
  • 一種僅使用 CMD.EXE 中的功能的方法。我對使用 Powershell 等的解決方案好奇,但這些對我沒有幫助 - Powershell 不會在該腳本將執行的機器上。

類似於馬特的正確答案。基本上在這個版本中,完整的路徑已經過驗證。

SET AppExePath="%ProgramFiles(x86)%\MyApp\app.exe"
IF NOT EXIST %AppExePath% SET AppExePath="%ProgramFiles%\MyApp\app.exe"
%AppExePath%

這是我能想到的最好的:

set strProgramFiles=%ProgramFiles%
if exist "%ProgramFiles(x86)%" set strProgramFiles=%ProgramFiles(x86)%
"%strProgramFiles%\MyApp\app.exe"

引用自:https://serverfault.com/questions/9009