代码之家  ›  专栏  ›  技术社区  ›  masher

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

  •  0
  • masher  · 技术社区  · 4 年前

    我有一个python脚本 script.py 设计用于在命令行上运行。为了便于运行,我有一个windows批处理文件 script.bat 这会设置一些默认值和其他东西。它们存在于同一目录中。

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

    >where script 首先列出批处理文件,因此据我所知,它应该优先于python脚本运行。

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

    0 回复  |  直到 4 年前
        1
  •  3
  •   Gerhard    4 年前

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

    test
    test.bat
    test.cmd
    test.py
    

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

    哪个先执行是顺序问题 pathext 变量,一个例子,通过运行 set pathext cmd :

    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 第一。

        2
  •  0
  •   masher    4 年前

    通过将我的脚本制作成包含以下内容的zip文件来解决 主要的 .py。 script.pyz 在批次之后运行。