原理及问题:
- 使用注册表检测Python是否安装,检测注册表项
hklm\software\Python\pythoncore
是否存在指定版本信息。经试验发现该注册表项对于较早的安装包无效。 - 使用
py -3.7 --version
检测Python解释器是否正常运行,较早的安装包或者未安装python启动器
将检测失败。 - 采用静默模式安装Python,针对所有用户安装,将Python信息加入环境变量path中。
- 安装文件必须与批处理文件处于同一目录。
@ECHO OFF
rem 检测注册表中是否有Python3.7信息。
echo ----------------------------------
echo 检测注册表……
reg query "hklm\software\Python\pythoncore\3.7" >nul 2>nul
if %errorlevel%==0 (echo 注册表检测到指定版本Python & GOTO check_python) else (echo 注册表未检测到指定版本Python!开始安装Python3.7…… & goto install_python)
:uninstall_python
echo 正在卸载Python!请稍候……
python-3.7.6-amd64.exe /quiet /uninstall
echo 卸载Python完成!
:check_python
rem 检测运行指定版本Python是否成功。
echo ----------------------------------
echo 检测指定版本Python运行状况……
py -3.7 --version >nul 2>nul
if %errorlevel%==0 (echo Python运行正常! & goto check_pip) else (echo Python运行异常!)
pause
:check_pip
rem 检测运行pip是否成功。
echo ----------------------------------
echo 检测pip运行状况……
@for /f "tokens=1" %%i in ('pip --version ^| findstr /C:"pip"') do ^
set PIPVER=%%i
@if "%PIPVER%" == "pip" (@echo Pip运行正常!) else echo (Pip运行异常!)
pause
goto:eof
:install_python
rem 采用静默模式安装Python。
echo ----------------------------------
echo 开始安装Python,请稍候……
python-3.7.6-amd64.exe /quiet InstallAllUsers=1 PrependPath=1
if %errorlevel%==0 (echo Python3.7安装成功!& goto check_python) else echo (Python安装失败!)