Вы можете использовать for
для токенизации на ;
, но вам нужно позаботиться о путях, в которых есть ;
(и, следовательно, нужны кавычки). В целом, я бы сказал, что на данный момент вы создадите довольно хрупкое решение с большим количеством кода.
Если вы хотите знать, где находится определенный исполняемый файл, тогда
for %%i in ("mysql.exe") do @echo.%%~$PATH:i
скажет вам об этом (или нет, если в PATH
его нет).
ОБНОВЛЕНИЕ: Хорошо, я понял. Ниже следует один неприятный маленький пакетный файл:
@echo off
setlocal enabledelayedexpansion enableextensions
set p=%PATH%
:loop
for %%i in ("notepad.exe") do call :setvar "%%~$p:i"
if not :%x%:==:: (call :clearpath & goto loop)
goto :eof
:setvar
set x=%~1
goto :eof
:clearpath
echo %x%
for %%x in ("!x!") do set d=%%~dpx
set d=!d:~,-1!
set p=!p:%d%=!
goto :eof
Это напечатает все подходящие пути из PATH
, где был найден notepad.exe
(первая из известных мне программ в двух местах здесь). Приспособьтесь соответственно к своей проблеме.
:clearpath
просто удаляет найденный путь из переменной, а затем мы снова пытаемся выполнить сопоставление, пока совпадение не останется.
Тем не менее, это все еще очень не красиво.