diff --git a/contrib/win32/hg.bat b/contrib/win32/hg.bat
new file mode 100644
--- /dev/null
+++ b/contrib/win32/hg.bat
@@ -0,0 +1,12 @@
+@echo off
+rem Windows Driver script for Mercurial
+
+setlocal
+set HG=%~f0
+
+rem Use a full path to Python (relative to this script) as the standard Python
+rem install does not put python.exe on the PATH...
+rem %~dp0 is the directory of this script
+
+%~dp0..\python "%~dp0hg" %*
+endlocal
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -19,6 +19,9 @@ from distutils.ccompiler import new_comp
 import mercurial.version
 
 extra = {}
+scripts = ['hg']
+if os.name == 'nt':
+    scripts.append('contrib/win32/hg.bat')
 
 # simplified version of distutils.ccompiler.CCompiler.has_function
 # that actually removes its temporary files.
@@ -119,7 +122,7 @@ setup(name='mercurial',
       url='http://selenic.com/mercurial',
       description='Scalable distributed SCM',
       license='GNU GPL',
-      scripts=['hg'],
+      scripts=scripts,
       packages=packages,
       ext_modules=ext_modules,
       data_files=[(os.path.join('mercurial', root),