亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Windows命令行中是否有“哪個”的等價物?

Windows命令行中是否有“哪個”的等價物?

守候你守候我 2019-06-13 19:11:57
Windows命令行中是否有“哪個”的等價物?由于有時我有路徑問題,其中一個自己的cmd腳本被另一個程序隱藏(隱藏在路徑的前面),所以我希望能夠在Windows命令行中找到一個程序的完整路徑,只要給出它的名稱。是否與UNIX命令“哪個”等效?在UNIX上,which command打印給定命令的完整路徑,以便輕松查找和修復這些隱藏問題。
查看完整描述

3 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

雖然以后版本的Windows有一個where命令,您也可以通過使用環境變量修飾符來完成此操作,如下所示:

c:\> for %i in (cmd.exe) do @echo.   %~$PATH:i
   C:\WINDOWS\system32\cmd.exe

c:\> for %i in (python.exe) do @echo.   %~$PATH:i
   C:\Python25\python.exe

你不需要任何額外的工具,而且它不限于PATH因為您可以替換您希望使用的任何環境變量(當然是路徑格式)。


而且,如果您想要一個能夠處理PATHEXT中的所有擴展(就像Windows本身一樣)的擴展,那么這個擴展就可以實現:

@echo off
setlocal enableextensions enabledelayedexpansion

:: Needs an argument.

if "x%1"=="x" (
    echo Usage: which ^<progName^>
    goto :end
)

:: First try the unadorned filenmame.

set fullspec=
call :find_it %1

:: Then try all adorned filenames in order.

set mypathext=!pathext!
:loop1
    :: Stop if found or out of extensions.

    if "x!mypathext!"=="x" goto :loop1end

    :: Get the next extension and try it.

    for /f "delims=;" %%j in ("!mypathext!") do set myext=%%j
    call :find_it %1!myext!

:: Remove the extension (not overly efficient but it works).

:loop2
    if not "x!myext!"=="x" (
        set myext=!myext:~1!
        set mypathext=!mypathext:~1!
        goto :loop2
    )
    if not "x!mypathext!"=="x" set mypathext=!mypathext:~1!

    goto :loop1
:loop1end

:end
endlocal
goto :eof

:: Function to find and print a file in the path.

:find_it
    for %%i in (%1) do set fullspec=%%~$PATH:i
    if not "x!fullspec!"=="x" @echo.   !fullspec!
    goto :eof

它實際上返回了所有的可能性,但是您可以很容易地根據特定的搜索規則對其進行調整。


查看完整回答
反對 回復 2019-06-13
  • 3 回答
  • 0 關注
  • 745 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號