我想编写.bat脚本,它可以在各种Windows下运行,无论是32位还是64位。
在这个脚本中我想运行一些file.exe。该文件位于32位系统下的C:\ Program Files \或x64系统下的C:\ Program文件夹(x86)\中。我可以写:
64位系统下的“%ProgramFiles(x86)%\ file.exe” 要么 32位系统下的“%ProgramFiles%\ file.exe” 但我想让脚本具有普遍性。有没有办法普遍确定这条路径?
答案 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
这假设您不必执行任何复杂的操作,但如果设置当前目录就足够了,这应该可以正常工作。