第一種代碼:通過(guò) %PROCESSOR_ARCHITECTURE%
可以通過(guò)cmd中 通過(guò)echo %PROCESSOR_ARCHITECTURE%
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位
這段批處理代碼很簡(jiǎn)單,如果是32位系統(tǒng),就打開腳本之家;如果是64位系統(tǒng),就打開百度
當(dāng)然了,這段批處理代碼并沒(méi)有實(shí)際的用途,只是做一個(gè)測(cè)試。實(shí)際情況下,這個(gè)檢測(cè)還是很有用的,比如根據(jù)不同的情況,注冊(cè)不同的服務(wù),等等
第二種代碼:if exist %windir%\SysWOW64
實(shí)例代碼
@echo off
if exist %windir%\SysWOW64 (
start http://www.baidu.com
)else (
start https://www.jb51.net
)
原理是判斷是否存在SysWOW64目錄,一般情況下64位系統(tǒng)都會(huì)有這個(gè)目錄。
這段批處理代碼很簡(jiǎn)單,如果是32位系統(tǒng),就打開腳本之家;如果是64位系統(tǒng),就打開百度
以下腳本之家小編為大家分享幾個(gè)實(shí)例
使用cmd命令批處理判斷windows系統(tǒng)是32bit還是64bit
@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)用指定值對(duì)應(yīng)的cmd命令行
call:%b:~0,4%%PROCESSOR_ARCHITECTURE:~-1%
pauseexit
: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ù)補(bǔ)充
64位系統(tǒng)注冊(cè)表:
[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
@echo off
IF "%PROCESSOR_ARCHITECTURE%" == "X86" (
echo 32位系統(tǒng)
) ELSE (
echo 64位或更高系統(tǒng)
)
基本上這樣就明白了吧,真多32位于64位的很多需要區(qū)分對(duì)待這里就可以分開解決了。
下面繼續(xù)為大家分享一下
bat批處理判斷系統(tǒng)32位或64位以及操作系統(tǒng)類型
方法一:
systeminfo |find "x64"
方法二:
有時(shí)候需考慮wow的情況
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中存儲(chǔ)的數(shù)據(jù),PROCESSOR_ARCHITECTURE存儲(chǔ)的內(nèi)容
@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
批處理檢測(cè)32位64位系統(tǒng),結(jié)果到文本,判斷后將文件夾123拷貝相應(yīng)program files或program files(x86)中?
通過(guò)批處理程序檢測(cè)系統(tǒng)是32位還是64位,將結(jié)果保存到c:\a.txt文件中,并且通過(guò)判斷的結(jié)果32位系統(tǒng)將123文件夾拷貝到C:\Program Files文件夾中,是64位系統(tǒng)則將123文件夾拷貝到C:\program files(x86)文件夾中。
比如我有很多綠色軟件,不是每一個(gè)軟件都需要判斷32位還是64位,都只是拷貝到C:\Program Files中,這樣做是不是只是臨時(shí)設(shè)置一次,不會(huì)影響到其它的批處理文件拷貝的路徑吧?
@echo off
if %PROCESSOR_ARCHITECTURE%==x86 (echo 32位系統(tǒng)>c:\a.txtxcopy /d/y/c/e/h/k "%~dp0123" "C:\Program Files\123\") else (echo 64位系統(tǒng)>c:\a.txtxcopy /d/y/c/e/h/k "%~dp0123" "C:\Program Files (x86)\123\")
pause
或
@echo off
if %PROCESSOR_ARCHITECTURE%==x86 (set "var=C:\Program Files") else set "var=C:\Program Files (x86)"
echo %var%
pause
是的,上面的代碼并沒(méi)有設(shè)置環(huán)境變量,只是設(shè)置了在批處理中的臨時(shí)局部變量而已,退出批處理就失效了.
您可能感興趣的文章:- 讓bat批處理以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)方法
- BAT 批處理腳本教程(詳細(xì)篇腳本之家補(bǔ)充)
- Windows下使用批處理文件.bat刪除舊文件
- 利用bat批處理程序通過(guò)DOS命令行刪除所有的空文件夾的方法
- 解決springmvc+mybatis+mysql中文亂碼問(wèn)題
- bat文件加密 bat解密腳本(讓bat亂碼現(xiàn)形)
- 解決bat批處理輸出亂碼的問(wèn)題