簡體   English   中英

如何從 CMD 上的一串根中獲得唯一的根?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM