@echo off

rem from issue #964

Setlocal EnableDelayedExpansion

rem Check Windows Version
set TOKEN=tokens=3*
ver | findstr /i "5\.0\." > nul
if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=3*
ver | findstr /i "5\.1\." > nul
if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=3*
ver | findstr /i "5\.2\." > nul
if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=3*
ver | findstr /i "6\.0\." > nul
if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=2*
ver | findstr /i "6\.1\." > nul
if %ERRORLEVEL% EQU 0 SET TOKEN=tokens=2*

rem Start calculating PYTHON and PYTHON_DIR
set PYTHON=
set PYTHON_DIR=

Setlocal EnableDelayedExpansion

set PYTHON_DIR_OK=FALSE
set REGPATH=

for %%i in (3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0 2.7 2.6 2.5 2.4 2.3) do (
for %%j in (HKCU HKLM) do (
for %%k in (SOFTWARE\Wow6432Node SOFTWARE) do (
for %%l in (Python\PythonCore IronPython) do (
set REG_PYTHON_EXE=python.exe
if "%%l"=="IronPython" (
set REG_PYTHON_EXE=ipy.exe
)

@echo on

set REGPATH=%%j\%%k\%%l\%%i\InstallPath
rem @echo Regpath !REGPATH!
REG QUERY "!REGPATH!" /ve 1>nul 2>nul
if !ERRORLEVEL! equ 0 (
  for /F "%TOKEN% delims=	 " %%A IN ('REG QUERY "!REGPATH!" /ve') do @set REG_PYTHON_DIR=%%B
  if exist !REG_PYTHON_DIR!  (
    set REG_PYTHON=!REG_PYTHON_DIR!!REG_PYTHON_EXE!
    rem set PYTHON_DIR_OK=TRUE
    if "!PYTHON_DIR_OK!"=="FALSE" (
      set PYTHON_DIR=!REG_PYTHON_DIR!
      set PYTHON=!REG_PYTHON!
      set PYTHON_DIR_OK=TRUE
    )

    rem set PYTHON_DIR_OK=FALSE
    rem @echo Find !REG_PYTHON!
    rem goto finished
  )
)

echo off

)
rem for l
)
rem for k
)
rem for j
)
rem for i



:finished

Endlocal & SET PYTHON_DIR=%PYTHON_DIR% & SET PYTHON=%PYTHON%

if "%PYTHON_DIR%" == "" (
rem @echo No Python dir
set PYTHON=python
goto running
)

rem @echo %PYTHON_DIR%

if "%PYTHON%" == "" (
rem @echo No Python
set PYTHON=python
goto running
)

:running

@echo Using %PYTHON%

"%PYTHON%" -x "%~dp0waf" %*  & Endlocal & exit /b %ERRORLEVEL%

