从windows批处理文件运行python脚本-文件名冲突



我有一个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=.PY;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PYW

在这个修改后的版本中,我将.py放在第一位,这意味着如果只指定了名称,它将由扩展名按照列表的顺序运行。因此,举个例子,这里只有两个扩展名为.bat.py的类似文件,script.py将首先启动。。所以如果我把它移到最后:

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

现在,如果我们运行script,它会首先启动.bat吗。

通过将我的脚本制作成一个包含main.py的zip文件来解决。script.pyz在批处理后运行。

最新更新