【问题标题】: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"