bat命令批处理判断32位还是64位系统的多种方法

bat命令批处理判断32位还是64位系统的多种方法

更新时间:2018年02月01日 00:09:14   投稿:mdxy-dxy  
这篇文章主要介绍了cmd命令批处理判断32位还是64位系统的多种方法,需要的朋友可以参考下

第一种代码:通过 %PROCESSOR_ARCHITECTURE%

可以通过cmd中 通过echo %PROCESSOR_ARCHITECTURE%

1
2
3
4
5
6
7
8
9
if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64
exit
:x64
exit
 
:x86
 

x86代表系统是32位,AMD64代表系统是64位

这段批处理代码很简单,如果是32位系统,就打开脚本之家;如果是64位系统,就打开百度

当然了,这段批处理代码并没有实际的用途,只是做一个测试。实际情况下,这个检测还是很有用的,比如根据不同的情况,注册不同的服务,等等

第二种代码:if exist %windir%SysWOW64

实例代码

1
2
3
4
5
6
@echo off
if exist %windir%SysWOW64 (
)else (
)
 

原理是判断是否存在SysWOW64目录,一般情况下64位系统都会有这个目录。

这段批处理代码很简单,如果是32位系统,就打开脚本之家;如果是64位系统,就打开百度

以下脚本之家小编为大家分享几个实例

使用cmd命令批处理判断windows系统是32bit还是64bit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
::从系统文件中获取系统版本信息
for /f "tokens=1* delims=[" %%a in ('ver') do set b=%%b
::将版本信息赋值给变量b
set b=%b:* =%
::输出指定值
echo %b:~0,4%
echo %PROCESSOR_ARCHITECTURE:~-1%
echo %b:~0,4%%PROCESSOR_ARCHITECTURE:~-1%
::调用指定值对应的cmd命令行
call:%b:~0,4%%PROCESSOR_ARCHITECTURE:~-1%
pause&exit
:5.1.6
echo 系统版本: winxp_32位
goto:eof
:5.2.6
echo 系统版本: win2003_32位
goto:eof
:5.2.4
echo 系统版本: win2003_64位
goto:eof
:6.1.6
echo 系统版本:win7_32位
goto:eof
:6.1.4
echo 系统版本:win7或win2008_64位
 

输出如下:

继续补充

64位系统注册表:

[HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor]
“Identifier”=”Intel64 Family 6 Model 62 Stepping 4”

64位系统系统变量:

PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 62 Stepping 4, GenuineIntel

PROCESSOR_ARCHITECTURE = AMD64

1
2
3
4
5
6
7
@echo off
 
IF "%PROCESSOR_ARCHITECTURE%" == "X86" (
 echo 32位系统
) ELSE (
 echo 64位或更高系统
)
 

基本上这样就明白了吧,真多32位于64位的很多需要区分对待这里就可以分开解决了。

下面继续为大家分享一下

bat批处理判断系统32位或64位以及操作系统类型

方法一:

systeminfo |find "x64"

方法二:
有时候需考虑wow的情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
IF PROCESSOR_ARCHITECTURE == amd64 or
PROCESSOR_ARCHITEW6432 == amd64 THEN
// OS is 64bit
ELSE
// OS is 32bit
END IF
 
Another way to test for the same thing is:
 
IF PROCESSOR_ARCHITECTURE == x86 AND
PROCESSOR_ARCHITEW6432 NOT DEFINED THEN
// OS is 32bit
ELSE
// OS is 64bit
 
END IF
 

var中存储的数据,PROCESSOR_ARCHITECTURE存储的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
for /f "tokens=1* delims=[" %%a in ('ver') do set b=%%b
set b=%b:* =%
goto %b:~0,4%%PROCESSOR_ARCHITECTURE:~-1%
:5.1.6
echo xp_32λ
goto:eof
 
:6.1.6
echo win7_32λ
goto:eof
:6.1.4
echo win7_64λ
 
:6.0.6
echo vista_32
::exit
 
:6.0.4
echo vista_64
::exit
pause
 

批处理检测32位64位系统,结果到文本,判断后将文件夹123拷贝相应program files或program files(x86)中?

通过批处理程序检测系统是32位还是64位,将结果保存到c:a.txt文件中,并且通过判断的结果32位系统将123文件夹拷贝到C:Program Files文件夹中,是64位系统则将123文件夹拷贝到C:program files(x86)文件夹中。
比如我有很多绿色软件,不是每一个软件都需要判断32位还是64位,都只是拷贝到C:Program Files中,这样做是不是只是临时设置一次,不会影响到其它的批处理文件拷贝的路径吧?

1
2
3
@echo off
if %PROCESSOR_ARCHITECTURE%==x86 (echo 32位系统>c:a.txt&xcopy /d/y/c/e/h/k "%~dp0123" "C:Program Files123") else (echo 64位系统>c:a.txt&xcopy /d/y/c/e/h/k "%~dp0123" "C:Program Files (x86)123")
pause
 

1
2
3
4
@echo off
if %PROCESSOR_ARCHITECTURE%==x86 (set "var=C:Program Files") else set "var=C:Program Files (x86)"
echo %var%
pause
 

是的,上面的代码并没有设置环境变量,只是设置了在批处理中的临时局部变量而已,退出批处理就失效了.

出处:https://www.jb51.net/article/134126.htm

您的资助是我最大的动力!
金额随意,欢迎来赏!
款后有任何问题请给我留言。

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我。(●'◡'●)

如果你觉得本篇文章对你有所帮助,请给予我更多的鼓励,求打             付款后有任何问题请给我留言!!!

因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【Jack_孟】!

原文地址:https://www.cnblogs.com/mq0036/p/14499571.html