制作Python批处理文件

3
我该如何创建一个.bat文件来运行一个包含pygame的Python文件?

3
从命令提示符中找出如何操作,然后将其放入批处理文件中。 - Ignacio Vazquez-Abrams
2
如果你正在寻找一些人们可以双击打开的东西,那么 py2exe 是一个不错的解决方案。 - Adam Rosenfield
4个回答

10

简单。

只需要将以下内容作为批处理文件的第一行即可:

python -x %0 %* &goto :eof

批处理文件的其余部分是Python程序。以下是一个完整的示例:

python -x %0 %*    &goto :eof 

import sys
print "this is a batch file"
sys.exit()

首先,&是一个分隔符,允许第一行包含两个独立的批处理命令。第一个运行Python,第二个命令跳过剩下的批处理文件,这是Python代码,而不是批处理语言。

-x是Python选项,它跳过文件的第一行,因此这个特殊的行只被处理为批处理文件,而不是由Python解释器处理。%0%*是两个特殊的批处理文件变量,表示批处理文件本身的名称和在调用批处理文件时给出的任何参数。

我已经尝试了这个作为.bat.cmd文件,唯一的注意事项是您需要使用包括扩展名在内的完整名称来调用文件。请参见类似问题:如何在批处理文件中使用Jscript


顺便说一句,这是一个允许无需扩展名调用的黑客技巧:@echo off& python -x %0".bat" %* &goto :eof - eat
真是个糟糕的东西。虽然可以接受,但至少有两个问题:它强制你的Python文件以.bat结尾命名!而且:错误消息中的行号现在偏移了1,对于初学者来说是个很好的惊喜!谢谢。 - eat
这不是用于编写代码,而是用于部署已经编写和测试过的代码。 - Michael Dillon
但显然,OP在这个问题上是新手。没有必要让问题变得更加复杂(可能)。我也不知道更有经验的人如何看待你的方法,但只是猜测,我预计你的方法不会被大多数人采纳。谢谢。 - eat
goto :eof 可以被替换为 exit /b [可选的错误级别]。只是为了避免在过去20年中第一次使用 goto ;) - Alex Musayev
如果您使用"%~f0"而不是%0,则可以获得脚本的完全限定路径,这可能是必要的,如果您想从当前执行时所在的目录以外的目录运行它。 - dash-tom-bang

5
所有的批处理文件都只是一些命令的列表,它们是纯文本文件(我指的是纯文本,不是 MS Word)。例如,如果您想通过命令行打开游戏,则可以这样做:
python MyGame.py

接下来你只需要创建一个包含完全相同内容的文件。将扩展名更改为.bat,然后就完成了。


我尝试了一下,得到了以下信息:“python”不被识别为内部或外部命令、可执行程序或批处理文件。它还将我的程序名称更改为以.pyw.py结尾。 - Paul Ronjak
@Paul Ronjak:你的python.exe所在的目录是否已列入你的path中?如果没有,你必须将其添加到其中。谢谢。 - eat
那还是不行。我有C:........pythonfile.py,然后在下一行上加上'pause'。它只是说文件名不是可识别的命令。 - Paul Ronjak
1
没关系,我已经解决了。我只需要在文件名之前添加一个文件路径到我的Python程序中即可。 - Paul Ronjak
@Paul Ronjak:看起来你的 python.exe 仍然不在你的 path 中。还有,你尝试过 > MyGame.py 命令在你的系统中是否有效吗?谢谢。 - eat

0

输入命令cd切换目录,例如cd c:/users/me/Desktop。 然后在下一行输入mygame.py。 你的代码应该长成这样:

cd c:/users/me/Desktop 
mygame.py

欢迎来到SO!感谢您的帮助,但是您应该解释一下您的答案相对于现有答案的优势。否则,它就会变得非常冗余,不是吗? - Hermann Döppes

0

创建一个包含这两行的批处理文件:

"yourfilename".py
pause

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接