[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 用%processor_architecture%来判断64位系统和32位系统是不准确的

%processor_architecture%变量根本不能用来判断是32位系统还是64位系统。我不知道那个问题回答这个变量的是复制别人的还是经过自己测试过的。

以下是我的测试结果。

当%processor_architecture%变量在64位系统中在32位的CMD下显示的是x86,在64位CMD下显示的是???64,我还测试了BAT转换成EXE后显示的结果,由于转换后的EXE程序是32位的,所以%processor_architecture%变量的结果是x86。所以%processor_architecture%不能当作来判断32位系统还是64位系统的。
  1. rem 测试用%PROCESSOR_IDENTIFIER%结果并不能作为判断32位系统的64位系统的依据
  2. echo PROCESSOR_IDENTIFIER=%PROCESSOR_IDENTIFIER%
  3. echo PROCESSOR_ARCHITECTURE=%PROCESSOR_ARCHITECTURE%
  4. pause
复制代码
以下代码可以正确判断是32位系统和64位系统
xp、win7 32/64、win8.1 32/64测试通过。
  1. rem 判断64位系统和32位系统
  2. if /i %PROCESSOR_IDENTIFIER:~0,3%==x86 (
  3. echo 32位操作系统
  4. ) else (
  5. echo 64位操作系统
  6. )
  7. pause
复制代码

我的电脑上得到的结果是这样的:

C:\>echo %PROCESSOR_IDENTIFIER:~0,3%
Int

C:\>echo %PROCESSOR_IDENTIFIER%
Intel64 Family 6 Model 42 Stepping 7, GenuineIntel

不知道其它处理器会是什么结果
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. if "%PROCESSOR_ARCHITECTURE%%PROCESSOR_ARCHITEW6432%" == "x86" (
  2.     echo 32
  3. ) else (
  4.     echo 64
  5. )
复制代码
可以试试这个效果如何
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我的电脑上得到的结果是这样的:

C:\>echo %PROCESSOR_IDENTIFIER:~0,3%
Int

C:\>echo %PROCESSOR_I ...
Batcher 发表于 2014-7-7 23:13



    echo %PROCESSOR_IDENTIFIER:~0,3%
这句只判断了是否等于"x86"如果非"x86"就认为是64位的,我想这样应该是可以的,至少 目前我测试的这几个系统 都是可以的

TOP

回复 4# szl1123


    3楼的那种方法在你的几个系统里面会不会误判?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

相比 变量  PROCESSOR_IDENTIFIER 的判断 变量 processor_architecture 的判断还是繁琐点
下面代码网友测试成功了 本人没测试系统 不发表意见
  1. @echo off
  2.   Set "xOS=x64"& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set "xOS=x32"
  3.   echo %xOS%
  4. pause
复制代码

TOP

回复 5# Batcher


    xp、win7 32/64、win8 32/64测试通过。

%PROCESSOR_ARCHITEW6432%此变量只出现在64位系统中32位的CMD中有显示,64位CMD中没有显示这个变量,32位系统中也没有显示这个变量。

TOP

相比 变量  PROCESSOR_IDENTIFIER 的判断 变量 processor_architecture 的判断还是繁琐点
下面代码网友测试 ...
terse 发表于 2014-7-8 18:28



     可用

TOP

那要是64位的CPU,安装的是32位的系统,怎么办,岂不判断错误了?

TOP

本帖最后由 a20150604 于 2021-10-6 12:39 编辑

ProgramFiles(x86) 在32位系统上是否有定义, 如果没有, 只用检测此变量就行了
  1. if defined ProgramFiles(x86) (echo;64) else echo;32
复制代码

TOP

返回列表