bat命令批處理判斷32位還是64位系統(tǒng)的多種方法
第一種代碼:通過 %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 explorer.exe http://www.baidu.com/ exit :x86 explorer.exe https://www.jb51.net/ |
x86代表系統(tǒng)是32位,AMD64代表系統(tǒng)是64位
這段批處理代碼很簡單,如果是32位系統(tǒng),就打開腳本之家;如果是64位系統(tǒng),就打開百度
當然了,這段批處理代碼并沒有實際的用途,只是做一個測試。實際情況下,這個檢測還是很有用的,比如根據(jù)不同的情況,注冊不同的服務,等等
第二種代碼:if exist %windir%\SysWOW64
實例代碼
1
2
3
4
5
6
|
@ echo off if exist %windir%\SysWOW64 ( start http://www.baidu.com )else ( start https://www.jb51.net ) |
原理是判斷是否存在SysWOW64目錄,一般情況下64位系統(tǒng)都會有這個目錄。
這段批處理代碼很簡單,如果是32位系統(tǒng),就打開腳本之家;如果是64位系統(tǒng),就打開百度
以下腳本之家小編為大家分享幾個實例
使用cmd命令批處理判斷windows系統(tǒng)是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 ::從系統(tǒng)文件中獲取系統(tǒng)版本信息 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% ::調(diào)用指定值對應的cmd命令行 call:%b:~0,4%%PROCESSOR_ARCHITECTURE:~-1% pause&exit :5.1.6 echo 系統(tǒng)版本: winxp_32位 goto:eof :5.2.6 echo 系統(tǒng)版本: win2003_32位 goto:eof :5.2.4 echo 系統(tǒng)版本: win2003_64位 goto:eof :6.1.6 echo 系統(tǒng)版本:win7_32位 goto:eof :6.1.4 echo 系統(tǒng)版本:win7或win2008_64位 |
輸出如下:
繼續(xù)補充
64位系統(tǒng)注冊表:
[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0]
“Identifier”=”Intel64 Family 6 Model 62 Stepping 4”
64位系統(tǒng)系統(tǒng)變量:
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位系統(tǒng) ) ELSE ( echo 64位或更高系統(tǒng) ) |
基本上這樣就明白了吧,真多32位于64位的很多需要區(qū)分對待這里就可以分開解決了。
下面繼續(xù)為大家分享一下
bat批處理判斷系統(tǒng)32位或64位以及操作系統(tǒng)類型
方法一:
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中存儲的數(shù)據(jù),PROCESSOR_ARCHITECTURE存儲的內(nèi)容
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位系統(tǒng),結(jié)果到文本,判斷后將文件夾123拷貝相應program files或program files(x86)中?
通過批處理程序檢測系統(tǒng)是32位還是64位,將結(jié)果保存到c:\a.txt文件中,并且通過判斷的結(jié)果32位系統(tǒng)將123文件夾拷貝到C:\Program Files文件夾中,是64位系統(tǒng)則將123文件夾拷貝到C:\program files(x86)文件夾中。
比如我有很多綠色軟件,不是每一個軟件都需要判斷32位還是64位,都只是拷貝到C:\Program Files中,這樣做是不是只是臨時設置一次,不會影響到其它的批處理文件拷貝的路徑吧?
1
2
3
|
@ echo off if %PROCESSOR_ARCHITECTURE%==x86 ( echo 32位系統(tǒng)>c:\a.txt&xcopy /d/y/c/e/ h /k "%~dp0123" "C:\Program Files\123\") else (echo 64位系統(tǒng)>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 |
是的,上面的代碼并沒有設置環(huán)境變量,只是設置了在批處理中的臨時局部變量而已,退出批處理就失效了.