簡體   English   中英

批處理兩個python版本

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM