我编写了一个批处理脚本,用于检查 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,安装程序也会启动。这里有什么问题?

最佳答案

注册表查询完成后,您的代码不会分支。不管第一个 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

关于windows - 用于检查 Python 是否安装的批处理文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4920483/

10-09 06:42
查看更多