[英]How can I get a only root from a strings of roots on CMD?
當我打印時,我嘗試使用批處理文件從%PATH%獲取 python 可執行文件的根:
echo %PATH%
我得到:
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Common Files\Propellerhead Software\ReWire\;C:\Program Files\Common Files\Propellerhead Software\ReWire\;C:\Users\stackoverflow\AppData\Local\Programs\Python\Python37\Scripts\;C:\Users\stackoverflow\AppData\Local\Programs\Python\Python37\;C:\Users\stackoverflow\AppData\Local\Microsoft\WindowsApps;;C:\Users\stackoverflow\AppData\Local\Programs\Microsoft VS Code\bin
我需要過濾它,因為我想得到:
C:\Users\stackoverflow\AppData\Local\Programs\Python\Python37\
我試圖這樣做,但它只打印相同的echo %PATH%不起作用
for /f "tokens=* delims=;" %%a IN ("%PATH%") do (
echo "%%~a"
)
總之,如何使用批處理文件從 %PATH% 的字符串中獲取 python 的根?
您需要將path
變量拆分為每行一個條目。 這可以通過echo %path:;=&echo %
來完成。 用find
捕捉正確的行並放置一個for
循環以將 output 捕獲到變量中:
for /f "delims=" %%a in ('"(echo %path:;=&echo %)|find /i "phyton""') do set "PythonPath=%%a"
echo %PythonPath%
感謝斯蒂芬,我得到了答案,它是:
for %%i in ("python.exe") do set root=%%~$PATH:i
set python_path=%root:~0,-11%
echo %python_path%
我的 output:
C:\Users\stackoverflow\AppData\Local\Programs\Python\Python37
我認為最簡單的方法是這樣的:
for /F "delims=" %%a in ('where phyton.exe') do echo %%~DPa
但我也寫了這個批處理文件來獲取所有應用程序的路徑:
@echo off
setlocal EnableDelayedExpansion
for %%a in ("%PATH:;=" "%") do (
set "name=%%~a"
if "!name:~-1!" equ "\" set "name=!name:~0,-1!"
for %%b in ("!name!") do set "pathOf[%%~Nb]=%%~a"
)
REM SET pathOf
rem For example:
echo %pathOf[Python37]%
這樣你就可以得到你需要的東西:
for /f "usebackq tokens=11 delims=;;" %%a in (`"echo %PATH%" ^| find /i "Python"`)
do (
echo "%%~a"
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.