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



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

批处理文件需要检查代码在哪个版本的操作系统(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如果是,请在与 bat 文件相同的位置执行.exe

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

这更简单:

if exist "%SYSTEMDRIVE%Program Files (x86)" (
   start "" /d "%~dp0" "CP210xVCPInstaller_x64.exe"
) else (
   start "" /d "%~dp0" "CP210xVCPInstaller_x86.exe"
)
for /f %%a in ('wmic os get osarchitecture^|find /i "bits"') do set "bits=%%a"
echo %bits%

这将处理将输出分配给变量的"如何"。为避免出现问题,仅检索 wmic 输出中的第一个标记(从 32 bits64 bits 中检索,仅检索数字)

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

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

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

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

最新更新