![](/img/trans.png)
[英]Running python script in python shell from a windows batch file
[英]Running python script from windows batch file - filename conflicts
我有一个 python 脚本script.py
设计为在命令行运行。 为了更容易运行,我有一个 windows 批处理文件script.bat
,它设置了一些默认值和其他内容。 它们存在于同一目录中。
如果我在命令提示符下运行>script
,则 python 脚本优先运行到批处理文件。 >script.bat
按预期工作。
>where script
首先列出批处理文件,所以据我了解,它应该优先运行到 python 脚本。
我可以确保批处理文件优先运行而不重命名或使用文件扩展名吗?
where
的顺序不是它将执行的顺序。 where 首先按字母顺序列出本地路径中的文件,然后会列出环境路径中的名称。 所以假设在工作dir
中你有文件:
test
test.bat
test.cmd
test.py
这就是它们将按字母顺序列出的方式。
首先执行的是pathext
变量的顺序问题,例如,通过从cmd
运行set pathext
pathext :
PATHEXT=.PY;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PYW
在这个修改后的版本中,我将.py
放在首位,这意味着如果只指定名称,它就会由扩展程序按照列表的顺序运行。 因此,鉴于您的示例仅包含扩展名为.bat
和.py
的 2 个类似文件,这里script.py
将首先启动。所以如果我将它移到最后:
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
现在,如果我们运行script
,它会首先启动.bat
。
通过将我的脚本制作成包含主.py 的 zip 文件来解决。 script.pyz
在批处理之后运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.