我正在开发一个可移植的开发环境,所以我需要找到垃圾箱的路径。我已经尝试过了:
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\
,我该如何实现呢?
答案 0 :(得分:2)
使用修饰符(在for /?
中进行了描述):
for /f "tokens=*" %%a in ('dir mysqld.exe /b /s') do set "mysql=%%~dpa"
echo %mysql%
%%~dpa
仅返回 d 河流和 p ath。
无需使用dir
即可(因为for /r
可以递归搜索文件):
for /r "c:\startfolder" %%a in (mysqld.exe) do set "mysql=%%~dpa"
"c:\startfolder"
是递归搜索的起点(您可以忽略它以在当前文件夹及其子文件夹中进行搜索)
注意:如果有多个匹配文件,则该变量将保留最近的发现。
答案 1 :(得分:0)
使用带有参数的子例程。 read about parameters here
类似这样的事情。删除我添加的用于显示的内容。
@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