2011-02-07 86 views
2

我已經編寫了一個批處理腳本來檢查Python是否已安裝,如果未安裝 - 它將啓動包含在與其自身相同的文件夾中的Python安裝程序。批處理文件檢查是否安裝了Python

我用下面的代碼:

reg query "hkcu\software\Python 2.6" 

if ERRORLEVEL 1 GOTO NOPYTHON 

:NOPYTHON 
ActivePython-2.6.4.8-win32-x86.msi 

reg query "hklm\SOFTWARE\ActiveState\ActivePerl\" 1>>Output_%date%_%time%.log 2>&1 
if ERRORLEVEL 1 GOTO NOPERL 

reg query "hklm\SOFTWARE\Gtk+" 
if ERRORLEVEL 1 GOTO NOPYGTK 


:NOPERL 
ActivePerl-5.10.1.1006-MSWin32-x86-291086.msi 1>>Output_%date%_%time%.log 2>&1 

:NOPYGTK 
pygtk_windows_installer.exe 

但在某些情況下,安裝程序啓動即使安裝了Python。這裏有什麼問題?

回答

7

註冊表查詢完成後,您的代碼不會分支。無論第一個if ERRORLEVEL的評估結果如何,下一步總是進入:NOPYTHON標籤。

Ed:下面是一個如何使它工作的例子。這個想法是添加另一個goto語句,如果需要,它將跳過:NOPYTHON標籤。

reg query "hkcu\software\Python 2.6" 
if ERRORLEVEL 1 GOTO NOPYTHON 
goto :HASPYTHON 
:NOPYTHON 
ActivePython-2.6.4.8-win32-x86.msi 

:HASPYTHON 
reg query "hklm\SOFTWARE\ActiveState\ActivePerl\" 1>>Output_%date%_%time%.log 2>&1 
10

對於那些誰只是想要一個簡單的檢查是否安裝了Python和可以在不進入將註冊表中執行,在批處理文件:

:: Check for Python Installation 
python --version 2>NUL 
if errorlevel 1 goto errorNoPython 

:: Reaching here means Python is installed. 
:: Execute stuff... 

:: Once done, exit the batch file -- skips executing the errorNoPython section 
goto:eof 

:errorNoPython 
echo. 
echo Error^: Python not installed 
+0

假設Python是在你的路徑,哪一種跳過困難的部分 – 2017-02-06 21:48:34