If you only want the program to be invokable from cmd and PowerShell*
then a .bat file should be fine. Depending on file extension to invoke
.py files with py.exe is subject to input/output redirection bugs on
some windows systems (this is solveable when using .py in PATHEXT
instead of file associations for cmd at least).
However, if you also want the program name to be invokable from e.g.
subprocess with shell=False or from git-bash or Cygwin or many other
things then neither .bat files nor PATHEXT are sufficient. Wrapper
.exes are necessary to ensure that this works properly.