首页 > 解决方案 > 从 Windows 批处理文件运行 python 脚本 - 文件名冲突

问题描述

我有一个script.py设计为在命令行运行的 python 脚本。为了更容易运行,我有一个 Windows 批处理文件script.bat,它设置了一些默认值和其他内容。它们存在于同一目录中。

如果我>script在命令提示符下运行,则 python 脚本优先运行到批处理文件。>script.bat按预期工作。

>where script首先列出批处理文件,所以据我了解,它应该优先运行到python脚本。

我可以确保批处理文件优先运行而不重命名或使用文件扩展名吗?

标签: pythonwindowsbatch-file

解决方案


的顺序where不是它将执行的顺序。where 首先按字母顺序列出本地路径中的文件,然后会列出环境路径中的名称。所以假设在工作中dir你有文件:

test
test.bat
test.cmd
test.py

这就是它们将按字母顺序列出的方式。

首先执行是pathext变量的顺序问题,例如,通过运行set pathextfrom cmd

PATHEXT=.PY;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PYW

在这个修改后的版本中,我放在.py了第一位,这意味着如果只指定名称,它就会由扩展程序按照列表的顺序运行。因此,鉴于您的示例仅包含 2 个带扩展名的类似文件,.bat这里.pyscript.py首先启动.. 所以如果我将它移到最后:

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

现在如果我们运行script它会启动第.bat一个。


推荐阅读