查找包含文件的文件夹的脚本

时间:2019-06-08 12:25:55

标签: windows batch-file cmd

我正在开发一个可移植的开发环境,所以我需要找到垃圾箱的路径。我已经尝试过了:

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 个答案:

答案 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
相关问题