if run_script:
                 if sys.platform.startswith("win32"):
-                    subprocess.check_call(["cmd", "/c", "{}.bat".format(self.script)])
+                    # Without "call", "cmd /c {}.bat" will return 0.
+                    # See https://stackoverflow.com/a/30736987 for a detailed
+                    # explanation of why, including disassembly/decompilation
+                    # of relevant code in cmd.exe.
+                    # Running the script manually from a command prompt is
+                    # unaffected- i.e. "call" is not required.
+                    subprocess.check_call(["cmd", "/c", "call {}.bat".format(self.script)])
                 else:
                     subprocess.check_call(["sh", "{}.sh".format(self.script)])