Batch file 批处理文件以检查操作系统架构,然后执行适当的exe

Batch file 批处理文件以检查操作系统架构,然后执行适当的exe,batch-file,cmd,Batch File,Cmd,我正在尝试编写一个批处理文件,它将简化为用户安装驱动程序的过程 批处理文件需要检查代码运行的操作系统版本(64位或32位),然后执行相应的.exe 这就是我到目前为止所做的: set os_version=wmic os get osarchitecture echo "%os_version%" pause IF os_version = "64-bit" @run 64 bit start /d "%0" CP210xVCPInstaller_x64.exe ELSE @run 32 bi

我正在尝试编写一个批处理文件,它将简化为用户安装驱动程序的过程

批处理文件需要检查代码运行的操作系统版本(64位或32位),然后执行相应的
.exe

这就是我到目前为止所做的:

set os_version=wmic os get osarchitecture
echo "%os_version%"
pause

IF os_version = "64-bit"
@run 64 bit
start /d "%0" CP210xVCPInstaller_x64.exe
ELSE
@run 32 bit
start /d  "%0" CP210xVCPInstaller_x86.exe
现在,我在将命令
wmic-os-get-osarchitecture
的输出分配给变量时遇到了一个问题

然后我需要检查它是否等于
64位
,如果是,在与bat文件相同的位置执行
.exe

for /f %%a in ('wmic os get osarchitecture^|find /i "bits"') do set "bits=%%a"
echo %bits%
第二个问题是如何从与bat文件相同的目录运行
.exe

for /f %%a in ('wmic os get osarchitecture^|find /i "bits"') do set "bits=%%a"
echo %bits%
这将处理如何将输出分配给变量。为避免问题,仅检索wmic输出中的第一个令牌(从
32位
64位
,仅检索数字)

这将处理如何将输出分配给变量。为了避免问题,只检索wmic输出中的第一个令牌(从
32位
64位
,仅检索数字)

这更简单:

if exist "%SYSTEMDRIVE%\Program Files (x86)\" (
   start "" /d "%~dp0" "CP210xVCPInstaller_x64.exe"
) else (
   start "" /d "%~dp0" "CP210xVCPInstaller_x86.exe"
)
这更简单:

if exist "%SYSTEMDRIVE%\Program Files (x86)\" (
   start "" /d "%~dp0" "CP210xVCPInstaller_x64.exe"
) else (
   start "" /d "%~dp0" "CP210xVCPInstaller_x86.exe"
)

MC ND的方法需要更改为以下内容

for /f %%a in ('wmic os get osarchitecture ^| find /i "bit"') do set "bits=%%a"
echo %bits%

请注意
find/i“位”
find/i“位”
之间的差异。使用“位”将不起作用,因为OSArchitecture只返回32位或64位,而不是位。

MC ND的方法需要更改为以下内容

for /f %%a in ('wmic os get osarchitecture ^| find /i "bit"') do set "bits=%%a"
echo %bits%
if exist %windir%/syswow64 (
   start "" /d "%~dp0"/64 bit program (PE d+) path
) else (
   start "" /d "%~dp0"/32 bit program (PE L) path
)

请注意
find/i“位”
find/i“位”
之间的差异。使用“位”不起作用,因为OSArchitecture只返回32位或64位,而不是位。

为什么不使用%PROCESSOR\u ARCHITECTURE%?无论是Intel还是AMD,它都被设置为AMD64。希望您知道wmic在第一次在处女机器上运行时会提出问题。这可能会导致带有wmic的脚本第一次失败,并在后续时间正常工作。为什么不使用%PROCESSOR_ARCHITECTURE%?无论是Intel还是AMD,它都被设置为AMD64。希望您知道wmic在第一次在处女机器上运行时会提出问题。这可能会导致带有wmic的脚本第一次失败,并在后续时间正常工作。
if exist %windir%/syswow64 (
   start "" /d "%~dp0"/64 bit program (PE d+) path
) else (
   start "" /d "%~dp0"/32 bit program (PE L) path
)