所以我最近偶然發現了(可能)有用的%〜$ PATH:1擴展,但是我似乎無法使它正常工作。我試圖用它來製作一個廉價的Windows版本的哪個命令,但是這個語法似乎在擊敗我。我的批處理文件看起來像這樣:「ECHO處於關閉狀態」
@echo off
echo %~$PATH:1
然而,當我跑這跟例如
which cmd
我得到的輸出,根據文檔,這意味着%〜$ PATH:1沒有找到「cmd」。我究竟做錯了什麼?
所以我最近偶然發現了(可能)有用的%〜$ PATH:1擴展,但是我似乎無法使它正常工作。我試圖用它來製作一個廉價的Windows版本的哪個命令,但是這個語法似乎在擊敗我。我的批處理文件看起來像這樣:「ECHO處於關閉狀態」
@echo off
echo %~$PATH:1
然而,當我跑這跟例如
which cmd
我得到的輸出,根據文檔,這意味着%〜$ PATH:1沒有找到「cmd」。我究竟做錯了什麼?
檢查擴展名爲.exe,.cmd或.bat的文件是不夠的。這組適用的擴展在環境變量PATHEXT中定義。
這裏是我的版本的該命令是榮譽在搜索PATHEXT變量:我一直在使用this one一會兒
@echo off
rem Windows equivalent of Unix which command
setlocal enabledelayedexpansion
if "%~1"=="" (
echo Usage: which cmdname
exit /b 1
)
call :findOnPath "%~1"
if not errorlevel 1 exit /b 0
for %%E in (%PATHEXT:;= %) do (
call :findOnPath "%~1%%E"
if not errorlevel 1 exit /b 0
)
echo "%~1" not found on PATH.
exit /b 1
:findOnPath
if not "%~$PATH:1" == "" (
echo "%~$PATH:1"
exit /b 0
)
exit /b 1
拍!我只是想通了!我需要使用完整的「cmd.exe」作爲參數,而不是「cmd」。 D'哦! ]因此,完整的which.cmd腳本是這樣的:
@echo off
call :checkpath %1
call :checkpath %1.exe
call :checkpath %1.cmd
call :checkpath %1.bat
:checkpath
if "%~$PATH:1" NEQ "" echo %~$PATH:1
呀!最後是Windows上的哪個命令! ;]
,它也內置了檢查命令
非常好 - 我立場糾正。非常感謝。 – HerbCSO 2009-07-25 16:32:41