[英]Batch for trying two python versions
系统可能只有2.4.5或2.7.9的Python版本。 我正在尝试编写批处理错误处理以尝试首先使用python 2.7.9,如果失败,请使用python 2.4.5。
条件
系统已安装公司安装的软件,并且仅具有Python 2.4.5或Python 2.7.9。 而且我不知道哪一个,所以我的脚本必须向后兼容。
这就是我所拥有的
rem
@echo off
echo Building
"%COMMONPROGRAMFILES%\CompanyName\python\python27\python.exe" build.py
IF ERRORLEVEL 1 GOTO TRY-PYTHON-24
IF ERRORLEVEL 0 GOTO FINISHED-BUILDING
:TRY-PYTHON-24
"%COMMONPROGRAMFILES%\CompanyName\python\python24\python.exe" build.py
IF ERRORLEVEL 0 GOTO FINISHED-BUILDING
:FINISHED-BUILDING:
echo Done
...more code...
预期结果
首先尝试使用Python 2.7.9,如果存在ERRORLEVEL 1
,则尝试使用Python 2.4.5。 那里不会有错误。 这是编写try
except
语句的批处理版本(如Python)的正确方法吗?
如..
try:
...Python 2.7.9...
except:
...Python 2.4.5...
来源
我是根据Microsoft指南( https://support.microsoft.com/en-us/kb/39585 )编写的。 但是我不确定这是否是try
的最佳方法, except
两个版本的Python except
。
您可以使用IF EXIST
:
set "p279="%COMMONPROGRAMFILES%\WatchGuard\python\python27\python.exe""
set "p245="%COMMONPROGRAMFILES%\WatchGuard\python\python24\python.exe""
if exist %p279% (
set "python=%p279%"
) else (
set "python=%p245%"
)
call %python% build.py
我不能说批处理文件中try-except构造的一般情况,但是有一个解决这个特殊问题的简单得多的方法:使用PATH变量。 显示的代码可以替换为
@echo off
set "PATH=%PATH%;%COMMONPROGRAMFILES%\WatchGuard\python\python27"
set "PATH=%PATH%;%COMMONPROGRAMFILES%\WatchGuard\python\python24"
python build.py || exit /b
rem ... more code ...
以这种方式设置PATH可使批处理文件解释器自动在可能存在的两个目录中查找python.exe
。 如果同时安装了两个版本的Python,它将使用列表中较早的版本,即...\\python27
。 (请注意,这意味着如果在调用脚本时已在PATH中显示的目录中安装了其他版本的Python,则将使用该版本。这可能就是以此方式设置系统的人想要的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.