Windows
從 CMD.EXE 在 32 位和 64 位版本的 Vista/Windows 7 中查找應用程序的正確技術
背景
我有一個可以正常工作的現有 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"