Скрипт для поиска папки, содержащей файл - PullRequest
0 голосов
/ 08 июня 2019

Я работаю над переносной средой разработки, поэтому мне нужно найти маршрут бинов. Я пробовал с этим:

for /f "tokens=*" %%a in ('dir mysqld.exe /b /s') do set mysql=%%a

Возвращает A:\test\mysql-5.7.24-winx64\bin\mysqld.exe, но я хочу получить только папку, например A:\test\mysql-5.7.24-winx64\bin\, как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 08 июня 2019

использовать модификаторы (описанные в for /?):

for /f "tokens=*" %%a in ('dir mysqld.exe /b /s') do set "mysql=%%~dpa"
echo %mysql%

%%~dpa возвращает d rive и p только через ath.

То же самое без использования dir (так как for /r может рекурсивно искать файл (ы)):

for /r "c:\startfolder" %%a in (mysqld.exe) do set "mysql=%%~dpa"

"c:\startfolder" является начальной точкой для рекурсивного поиска (вы можете опустить его дляпоиск в текущей папке и ее подпапках)

Примечание: если имеется более одного совпадающего файла, переменная будет содержать последний результат.

0 голосов
/ 08 июня 2019

Использовать подпрограмму с параметром. читайте о параметрах здесь

Как то так.Удалить то, что я добавил для отображения.

@echo off
for /f "tokens=*" %%a in ('dir mysqld.exe /b /s') do call :GetFolder "%%a"
echo(%mysql%
pause
goto :eof

:GetFolder
REM 1=Filespec
set "MySQL=%~dp1"
goto :eof
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...