I've left a comment at rossipedia's answer about a similar situation, but I doubt it's gonna get noticed in a 8 year old post. So, I've experimented myself.
I have a python script that processes a folder that's dropped on it. As I add new lines, sometimes I get syntax errors, and I can't view them because the command prompt window closes too quickly. In order to keep the window open after an error, I had to modify rossipedia's code. I needed a way to pass a path to the bat file (drop a folder on it) and make the bat pass that path to the python script. The following does that:
debug.bat:
@echo off
REM debug.bat and myscript.py should be in the same dir, otherwise use absolute path for the python script
C:\Users\%username%\AppData\Local\Programs\Python\Python36-32\python.exe "%~dp0\myscript.py" %1
IF %ERRORLEVEL% NEQ 0 PAUSE
myscript.py:
import sys
print("printing dropped file path:")
print(sys.argv[1])
input()
If I get an error, I just use the debug.bat to view the error, and it works the same (drop a folder on it).
Update:
In my actual python script, I have this line:
sys.path.append("modules")
This doesn't work when I use debug.bat. "modules" is a folder that's in the same folder with the python script. When the script is called with debug.bat, the current working directory changes to the dropped file's directory. So, to get the path to "modules", I had to use absolute path:
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "\\modules")
input()) will be ignored. Enter this question.