【问题标题】:Running Python via batch, different Python.exe lovations?通过批处理运行 Python,不同的 Python.exe 位置?
【发布时间】:2021-02-20 20:52:00
【问题描述】:

我有一个日常使用的 Python 脚本,在我 Spyder 开始时创建和使用。 现在我创建了一个 bat 文件来运行该工具。 问题: 该工具应由 4 个不同的用户在日常工作中使用。每个用户都自己完成了 Python 安装。这意味着 python.exe 的位置不同。 如何解决这个问题?

有没有办法根据系统用户在bat文件中执行if/elif/else?

或者是为每个用户创建不同 bat 文件的唯一方法?

谢谢 尼尔斯

【问题讨论】:

    标签: python batch-file installation location


    【解决方案1】:

    只要所有系统用户在 PATH 环境变量中都有其 python 二进制文件的路径,您就可以使用where 命令来定位该路径。 (对于 linux/mac 用户,which 命令的作用类似)

    当我在命令提示符中输入where python.exe 时,它会打印出所有可以在我的 PATH 环境变量中的目录中找到的 python.exe 的列表。

    查看where /? 了解有关where 命令如何工作的更多信息。

    所以您需要做的就是使用where 命令为相应用户查找python 二进制文件,然后在批处理文件中使用您的脚本调用它。

    【讨论】:

      【解决方案2】:
      @ECHO OFF
      SETLOCAL
      
      set "myexe=clg.bbb"
      set "myexeloc="
      for /f "delims=" %%a in ('where "%myexe%" 2^>nul') do set "myexeloc=%%a"&goto found
      for %%d in (u w v c) do for /f "delims=" %%a in ('dir /b /s "%%d:\%myexe%" 2^>nul') do set "myexeloc=%%a"&goto found
      
      echo "%myexe%" Not found
      goto :eof
      
      :found
      echo myexeloc=%myexeloc%
      
      GOTO :EOF
      

      您需要将myexe 设置为所需的可执行文件名。我的设置适合​​我的测试(批量查找任何文件,而不仅仅是可执行文件。)

      第一个for 按照@bckmnn 的描述搜索path,并在第一个返回值上设置myexeloc 并报告查找结果。

      2>nul 抑制错误消息。

      如果搜索不成功,则按照给定的顺序搜索分配给%%d 的驱动器列表中的文件。我使用的设置是我的机器上存在和不存在的驱动器的混合。如果愿意,您可以使用完整的字母表,但搜索过程可能会很耗时。因此,应该首先在空格分隔的列表中指定最可能的驱动器名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-08
        • 2017-10-10
        • 1970-01-01
        相关资源
        最近更新 更多