未知文件夹全名时如何查找含指定关键词的文件夹路径并存入变量
匹配含指定关键词子文件夹并存入变量的实现方案
你已知根目录路径,且确认根目录下有且仅有一个名称包含latest的子文件夹,可根据你使用的终端环境选择对应命令,直接将目标完整路径存入变量:
Windows 命令提示符(CMD)
最简写法(适配单匹配场景)
因为你已经确认只有一个符合条件的文件夹,直接用通配符赋值即可:
set "TARGET_DIR=C:\Users\Me\Project\*latest*"
严谨校验写法(避免匹配异常)
如果需要自动获取绝对路径、避免多匹配/无匹配的异常,可以用for循环遍历匹配:
:: 脚本中使用的写法 set "SEARCH_ROOT=C:\Users\Me\Project" set "TARGET_DIR=" for /d %%i in ("%SEARCH_ROOT%\*latest*") do set "TARGET_DIR=%%~fi" :: 校验是否匹配成功 if not defined TARGET_DIR (echo 未找到名称含latest的目标文件夹 & exit /b 1)
如果是直接在CMD交互窗口手动输入执行,不是写在
.bat/.cmd脚本里,把命令里的%%i、%%~fi替换为%i、%~fi即可。
其中%%~fi是CMD的内置语法,会自动提取匹配项的完整绝对路径。
PowerShell
PowerShell 下推荐用原生文件查找命令,精准限定只匹配文件夹,避免通配符匹配到同名文件:
$searchRoot = "C:\Users\Me\Project" # 查找根目录下名称带latest的第一个文件夹,取完整路径存入变量 $targetDir = Get-ChildItem -Path $searchRoot -Directory -Filter "*latest*" | Select-Object -First 1 -ExpandProperty FullName # 校验匹配结果 if (-not $targetDir) { Write-Error "未找到名称含latest的目标文件夹"; exit 1 }
参数说明:
-Directory:限定只查找文件夹,排除同名文件-Filter "*latest*":筛选名称包含latest的项-ExpandProperty FullName:直接输出匹配项的完整绝对路径
类Unix Shell(Git Bash/WSL/Linux/macOS 终端)
如果是在类Unix shell环境下操作,用find命令精准匹配直接子文件夹即可:
SEARCH_ROOT="/c/Users/Me/Project" # 查找根目录下名称带latest的第一个直接子文件夹,完整路径存入变量 TARGET_DIR=$(find "$SEARCH_ROOT" -maxdepth 1 -type d -name "*latest*" -print -quit) # 校验匹配结果 if [ -z "$TARGET_DIR" ]; then echo "未找到名称含latest的目标文件夹" >&2; exit 1; fi
参数说明:
-maxdepth 1:限定只查找根目录下的直接子项,不会递归遍历深层目录-type d:限定只匹配文件夹-print -quit:找到第一个匹配项就直接输出结果并退出查找,执行效率更高
内容的提问来源于stack exchange,提问作者Peter2223
相关产品推荐
相关产品推荐

