如何在windows .bat脚本中检查32位Program Files文件夹的位置

时间:2010-05-19 10:19:27

标签: windows file location batch-file

我想编写.bat脚本,它可以在各种Windows下运行,无论是32位还是64位。

在这个脚本中我想运行一些file.exe。该文件位于32位系统下的C:\ Program Files \或x64系统下的C:\ Program文件夹(x86)\中。我可以写:

64位系统下的“%ProgramFiles(x86)%\ file.exe” 要么 32位系统下的“%ProgramFiles%\ file.exe” 但我想让脚本具有普遍性。有没有办法普遍确定这条路径?

5 个答案:

答案 0 :(得分:6)

你可以检查一下它的存在与否存储路径;

@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

答案 1 :(得分:4)

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  

答案 2 :(得分:1)

“whereis”是一个linux命令,但是有一个Windows端口可用(unxutils,我相信)。没有它你就没有路径。

答案 3 :(得分:1)

我认为您应该使用VBScript / JScript文件而不是“bat”文件。这些脚本中的任何一个都可以由Windows脚本解释器(wscript.exe / cscript.exe)执行。脚本环境和解释器可用于所有类型的窗口,因此无需担心。您可以使用VBScript查找遍历目录结构,检查文件存在等的代码示例。大部分时间都可以使用FileSystemObject Object

答案 4 :(得分:1)

为简单起见,您可以随时执行以下操作:

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

这假设您不必执行任何复杂的操作,但如果设置当前目录就足够了,这应该可以正常工作。