我正在尝试编写一个批处理文件,这将简化为我们的用户安装驱动程序的过程。
批处理文件需要检查代码在哪个版本的操作系统(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 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"
与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
)