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

时间:2014-03-03 09:33:04

标签: batch-file cmd

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

批处理文件需要检查代码运行的os(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

4 个答案:

答案 0 :(得分:3)

这更简单:

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

答案 1 :(得分:2)

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

这将处理将“输出”分配给变量的“How”。为了避免出现问题,只检索wmic输出中的第一个标记(来自32 bits64 bits,只检索数字)

答案 2 :(得分:1)

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位而不是位,所以不会工作。

答案 3 :(得分:0)

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