diff --git a/waf.bat b/waf.bat
new file mode 100644
index 0000000..ecea1f7
--- /dev/null
+++ b/waf.bat
@@ -0,0 +1,96 @@
+@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%
+
