所以我最近偶然发现(可能)有用的%〜$ PATH:1扩展,但是我似乎无法使其正常工作。我试图用它来制作一个廉价的Windows版本的命令,但语法似乎打败了我。我的批处理文件如下所示:
@echo off
echo %~$PATH:1
但是当我用例如
运行时which cmd
所有我得到的结果是“ECHO关闭。”,这意味着根据文档,%〜$ PATH:1没有找到“cmd”。我做错了什么?
答案 0 :(得分:4)
检查扩展名为.exe,.cmd或.bat的文件是不够的。适用扩展的集合在环境变量PATHEXT中定义。
这是我在搜索时遵循PATHEXT变量的命令的版本:
@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
答案 1 :(得分:0)
拍摄!我只想出来了!我需要使用完整的“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上的哪个命令! ]
答案 2 :(得分:0)
我一直使用this one一段时间,它还会检查内置命令