bat命令批處理判斷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
explorer.exe http://www.baidu.com/
exit
:x86
explorer.exe https://www.jb51.net/
|
x86代表系統是32位,AMD64代表系統是64位
這段批處理代碼很簡單,如果是32位系統,就打開腳本之家;如果是64位系統,就打開百度
當然了,這段批處理代碼並沒有實際的用途,只是做一個測試。實際情況下,這個檢測還是很有用的,比如根據不同的情況,注冊不同的服務,等等
第二種代碼: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位系統都會有這個目錄。
這段批處理代碼很簡單,如果是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_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0]
“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 Files\123\") 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
|
是的,上面的代碼並沒有設置環境變量,只是設置了在批處理中的臨時局部變量而已,退出批處理就失效了.
