首页 > 解决方案 > 批处理 - 从目录 /b 返回完整路径

问题描述

我正在遍历驱动器上的文件夹,收集具有特定扩展名的文件名,并构建一个稍后在命令行开关中使用的字符串。当我找到一个合格的文件时,我需要知道它的完整路径,因为这是命令行所要求的。我目前使用“%~dp0%%a\%%b”来构建完整路径,但我可以看到,当批处理变得更复杂时(例如,它更深入地挖掘子文件夹),它可能会受到限制。我希望有一种方法可以将“%~dp0%%a\%%b”替换为找到的文件的路径。谢谢:

@ECHO OFF
for /f "usebackq tokens=*" %%a in (`dir /b /a:d`) do (
pushd %%a
setlocal ENABLEDELAYEDEXPANSION 
for /f "delims=" %%b in ('dir /b "*.E01" "*.L01" "*.AD1" 2^>nul') do (
SET EVIDENCE_STR=!EVIDENCE_STR! /e:"%~dp0%%a\%%b"
)
IF DEFINED EVIDENCE_STR (
ECHO !EVIDENCE_STR!
) ELSE (
ECHO No evidence files located in: %%a 
)   
endlocal
SET EVIDENCE_STR=
popd
)
PAUSE

标签: batch-file

解决方案


为什么需要创建 2 个循环,每个循环运行一个dir命令来查找文件?为什么不只是for /R循环?这是一个例子:

@echo off
set "files=*.E01 *.L01 *.AD"
for /R %%a in (%files%) do echo %%a

推荐阅读