我希望编写一个可以在所有版本的Windows上运行的.bat脚本,无论是32位还是64位系统。
在这个脚本中,我想要运行某个file.exe文件。该文件位于32位系统的C:\Program Files\或x64系统的C:\Program Files (x86)\下。我可以这样写:
在64位系统下:"%ProgramFiles(x86)%\file.exe" 在32位系统下:"%ProgramFiles%\file.exe" 但我想让这个脚本具有普适性。有没有一种通用的方法来确定路径呢?
我希望编写一个可以在所有版本的Windows上运行的.bat脚本,无论是32位还是64位系统。
在这个脚本中,我想要运行某个file.exe文件。该文件位于32位系统的C:\Program Files\或x64系统的C:\Program Files (x86)\下。我可以这样写:
在64位系统下:"%ProgramFiles(x86)%\file.exe" 在32位系统下:"%ProgramFiles%\file.exe" 但我想让这个脚本具有普适性。有没有一种通用的方法来确定路径呢?
你可以检查它的存在并存储路径。
@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
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
我认为你应该使用VBScript/JScript文件,而不是"bat"文件。这两种脚本都可以由Windows脚本解释器(wscript.exe/cscript.exe)执行。脚本环境和解释器在所有版本的Windows上都可用,所以不用担心。你可以找到使用VBScript遍历目录结构、检查文件是否存在等方面的代码示例。你可以在大部分情况下使用FileSystemObject Object。
为了简单起见,您可以始终执行以下操作:
cd %PROGRAMFILES%
cd %PROGRAMFILES(x86)%
Program.exe