python - 从 Windows 批处理文件运行 python 脚本 - 文件名冲突
问题描述
我有一个script.py
设计为在命令行运行的 python 脚本。为了更容易运行,我有一个 Windows 批处理文件script.bat
,它设置了一些默认值和其他内容。它们存在于同一目录中。
如果我>script
在命令提示符下运行,则 python 脚本优先运行到批处理文件。>script.bat
按预期工作。
>where script
首先列出批处理文件,所以据我了解,它应该优先运行到python脚本。
我可以确保批处理文件优先运行而不重命名或使用文件扩展名吗?
解决方案
的顺序where
不是它将执行的顺序。where 首先按字母顺序列出本地路径中的文件,然后会列出环境路径中的名称。所以假设在工作中dir
你有文件:
test
test.bat
test.cmd
test.py
这就是它们将按字母顺序列出的方式。
首先执行是pathext
变量的顺序问题,例如,通过运行set pathext
from cmd
:
PATHEXT=.PY;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PYW
在这个修改后的版本中,我放在.py
了第一位,这意味着如果只指定名称,它就会由扩展程序按照列表的顺序运行。因此,鉴于您的示例仅包含 2 个带扩展名的类似文件,.bat
这里.py
将script.py
首先启动.. 所以如果我将它移到最后:
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
现在如果我们运行script
它会启动第.bat
一个。
推荐阅读
- r - 在 lm 中使用权重时校正 df
- firebase - 使用 Firebase Auth 模拟器以编程方式创建用户
- python - 张量操作 - 从给定张量创建位置张量
- arrays - 有人可以解释一下数组的两个索引而不是数组的单个索引的作用吗?
- python - pytest 跳过其他继承类
- spring-boot - SpringBoot 2.4.0 - CrudRepository 自动装配错误
- rust - 如何在特征中使用枚举并在枚举中的结构上实现特征?锈
- php - PHP PDO 更新查询不起作用但没有错误
- react-native - App.js 未在 Expo 中呈现(React Native)
- git - 使用 git diff 时,这个“s”命令是什么,如何取消它?