批处理文件来检查OS的架构,然后执行相应的EXE(Batch file to check os ar

2019-10-19 11:10发布

我想编写一个批处理文件,这将缓解我们的用户安装驱动程序的过程。

该批处理文件需要检查代码运行在什么版本的操作系统(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-bit ,如果是执行.exe在同一位置的bat文件?

第二个问题是如何运行一个.exe从相同的目录bat文件?

Answer 1:

这是简单的:

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


Answer 2:

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

这将处理“如何”输出到变量分配。 为了避免出现问题,仅在WMIC的输出的第一令牌检索(从32 bits64 bits中,只有数字)



Answer 3:

MC ND的方法需要改变以下...

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

请注意在的差异find /i "bit" VS find /i "bits" 。 使用“位”将不起作用作为OSArchitecture只返回的32位或64位,而不是位。



Answer 4:

if exist %windir%/syswow64 (
   start "" /d "%~dp0"/64 bit program (PE d+) path
) else (
   start "" /d "%~dp0"/32 bit program (PE L) path
)


文章来源: Batch file to check os architecture and then execute appropriate exe