%〜$ PATH:1扩展问题

时间:2009-07-25 12:17:44

标签: windows batch-file

所以我最近偶然发现(可能)有用的%〜$ PATH:1扩展,但是我似乎无法使其正常工作。我试图用它来制作一个廉价的Windows版本的命令,但语法似乎打败了我。我的批处理文件如下所示:

@echo off
echo %~$PATH:1

但是当我用例如

运行时
which cmd

所有我得到的结果是“ECHO关闭。”,这意味着根据文档,%〜$ PATH:1没有找到“cmd”。我做错了什么?

3 个答案:

答案 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一段时间,它还会检查内置命令