Does anybody know how to create a batch file that can shell one program if its a 64-bit system or shell another if its a 32-bit system?
There is both a 32bit and 64bit version of the command processor (cmd.exe) and the same applies to some of the other core system components, such as the registry editor (regedit.exe). Which one you use depends on how you start the command processor.
Check for %PROCESSOR_ARCHITECTURE%
being x86
:
if %PROCESSOR_ARCHITECTURE%==x86 (
rem 32 bit
) else (
rem 64 bit
)
At least for the time being. On a server I have access to it's AMD64
but no clue how Itanium looks like, for example. But 32-bit versions always report x86
.
Another option, that also works on WoW64:
for /f "skip=1 delims=" %%x in ('wmic cpu get addresswidth') do if not defined AddressWidth set AddressWidth=%%x
if %AddressWidth%==64 (
rem 64 bit
) else (
rem 32 bit
)
It works without WMI too! I suggest:
@echo off
if /i "%processor_architecture%"=="AMD64" GOTO AMD64
if /i "%PROCESSOR_ARCHITEW6432%"=="AMD64" GOTO AMD64
if /i "%processor_architecture%"=="x86" GOTO x86
GOTO ERR
:AMD64
rem do amd64 stuff
GOTO EXEC
:x86
rem do x86 stuff
GOTO EXEC
:EXEC
rem do arch independent stuff
GOTO END
:ERR
@echo Unsupported architecture "%processor_architecture%"!
pause
:END
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With