[英]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.