【问题标题】:How to store the results of Batch Command where?如何将批处理命令的结果存储在哪里?
【发布时间】:2021-07-29 14:07:08
【问题描述】:

跑步

WHERE python

在我的 bat 脚本中,我给了我两个指向两个不同 python 实例的文件路径

C:~\AppData\Local\Programs\Python\Python38\python.exe
C:~\AppData\Local\Microsoft\WindowsApps\python.exe

如何将第一个存储在变量中。我目前正在尝试

FOR /f %%p in ('where python') do SET PYTHONPATH=%%p

但是,它只给了我第二个文件路径。

如何获得第一条路径?

【问题讨论】:

    标签: python batch-file command


    【解决方案1】:

    我会这样做:

    @For %%G In (python.exe) Do @Set "PYTHONPATH=%%~$PATH:G"
    

    where.exe 将搜索%PATH% 下的每个位置,并输出所有结果,这不是您想要的,因此我不提倡在这种特殊情况下使用它。

    但是,%~PATH: 修饰符将输出它找到的第一个结果。

    这也是始终确保您的 %PATH% 字符串值按优先级顺序列出的一个很好的理由,而不是盲目地预先添加新位置而不是附加它们。


    要完全回答您的具体问题,如果您还想使用where.exe,您只需要一种方法...

    • 在第一个结果后停止迭代:
    @For /F "Delims=" %%G In ('%SystemRoot%\System32\where.exe python.exe 2^>NUL') Do @Set "PYTHONPATH=%%~G" & GoTo Next
    :Next
    
    • 仅在尚未定义变量时定义变量:
    @Set "PYTHONPATH="
    @For /F "Delims=" %%G In ('%SystemRoot%\System32\where.exe python.exe 2^>NUL') Do @If Not Defined PYTHONPATH Set "PYTHONPATH=%%~G"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      相关资源
      最近更新 更多