我想编写一个批处理文件,这将缓解我们的用户安装驱动程序的过程。
该批处理文件需要检查代码运行在什么版本的操作系统(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文件?
这是简单的:
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 bits
或64 bits
中,只有数字)
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位,而不是位。
if exist %windir%/syswow64 (
start "" /d "%~dp0"/64 bit program (PE d+) path
) else (
start "" /d "%~dp0"/32 bit program (PE L) path
)