我正在尝试编写一个批处理文件,这将简化为用户安装驱动程序的过程。
批处理文件需要检查代码运行的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
?
答案 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 bits
或64 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
)