Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将批处理命令的结果存储在何处?_Python_Batch File_Command - Fatal编程技术网

Python 如何将批处理命令的结果存储在何处?

Python 如何将批处理命令的结果存储在何处?,python,batch-file,command,Python,Batch File,Command,运行 在我的bat脚本中,为我提供了两个指向两个不同python实例的文件路径 WHERE python 如何将第一个存储在变量中。我目前正试图 C:~\AppData\Local\Programs\Python\Python38\python.exe C:~\AppData\Local\Microsoft\WindowsApps\python.exe 但是,它只提供了第二个文件路径 如何获得第一条路径?我会这样做: @For%%G In(python.exe)Do@Set“PYTHONPA

运行

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

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

C:~\AppData\Local\Programs\Python\Python38\python.exe
C:~\AppData\Local\Microsoft\WindowsApps\python.exe
但是,它只提供了第二个文件路径

如何获得第一条路径?

我会这样做:

@For%%G In(python.exe)Do@Set“PYTHONPATH=%%~$PATH:G”
where.exe
将搜索
%PATH%
下的每个位置,并输出所有结果,这不是您想要的,因此我不主张在这种特殊情况下使用它

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

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


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

  • 在第一个结果之后停止迭代:
@For/F“Delims=“%%G In(“%SystemRoot%\System32\where.exe python.exe 2^>NUL”)Do@Set“PYTHONPATH=%%~G”&GoTo Next
:下一个
  • 仅在尚未定义变量时定义变量:
@Set“PYTHONPATH=”
@对于(“%SystemRoot%\System32\where.exe python.exe 2^>NUL”)中的/F“Delims=“%%G”)Do@如果未定义PYTHONPATH,则设置“PYTHONPATH=%%~G”
我会这样做:

@For%%G In(python.exe)Do@Set“PYTHONPATH=%%~$PATH:G”
where.exe
将搜索
%PATH%
下的每个位置,并输出所有结果,这不是您想要的,因此我不主张在这种特殊情况下使用它

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

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


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

  • 在第一个结果之后停止迭代:
@For/F“Delims=“%%G In(“%SystemRoot%\System32\where.exe python.exe 2^>NUL”)Do@Set“PYTHONPATH=%%~G”&GoTo Next
:下一个
  • 仅在尚未定义变量时定义变量:
@Set“PYTHONPATH=”
@对于(“%SystemRoot%\System32\where.exe python.exe 2^>NUL”)中的/F“Delims=“%%G”)Do@如果未定义PYTHONPATH,则设置“PYTHONPATH=%%~G”
FOR /f %%p in ('where python') do SET PYTHONPATH=%%p