我正在建立一个便携式开发环境。我正在尝试从闪存驱动器插入(32或64)批处理文件中获取当前系统的位数,因此我可以使用正确版本的IDE。
这篇文章是一个开头:http://support.microsoft.com/kb/556009但它使用的是相对地址,当然我的闪存驱动器没有操作系统,所以代码默认每次都是i586。
我需要做什么LOC?
答案 0 :(得分:2)
只需检查我的64位机器上的PROCESSOR_ARCHITECTURE环境变量是“AMD64”,我想在32位机器上它是“x86”。
答案 1 :(得分:2)
Tobias Schlegel的解决方案有一个警告:PROCESSOR_ARCHITECTURE环境变量只返回当前进程的位数。在64位计算机上,由于WoW64仿真,PROCESSOR_ARCHITECTURE在32位进程中仍然是“x86”。
为了解决这个问题,Microsoft添加了一个新的环境变量PROCESSOR_ARCHITEW6432,该变量仅在WoW64下运行的进程中定义。
因此,正确的代码是:
if "%PROCESSOR_ARCHITECTURE%" == "x86" if "%PROCESSOR_ARCHITEW6432%" == "" goto Arch32
goto Arch64
:Arch32
echo System architecture is 32-bit!
goto:eof
:Arch64
echo System architecture is 64-bit!
goto:eof
这种区别很重要,因为如果在64位计算机上从32位进程启动cmd.exe,则cmd.exe将在WoW64下运行,因此接受的解决方案将不正确。
答案 2 :(得分:1)
wmic OS get OSArchitecture
应返回32-bit
或64-bit
。
答案 3 :(得分:0)
你可以使用这段代码(注册表):
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% 2>NUL | find /I /N "x86">NUL
If [%ERRORLEVEL%] == [0] (
echo X86
) ELSE (
echo AMD64
)