Batch - возвращение полного пути из каталога / b - PullRequest
0 голосов
/ 03 мая 2018

Я перебираю папки на диске, собираю имена файлов с определенными расширениями и строю строку, которая позже используется в переключателе командной строки. Когда я нахожу соответствующий файл, мне нужно знать его полный путь, так как это то, что требуется в командной строке. В настоящее время я использую «% ~ 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

1 Ответ

0 голосов
/ 03 мая 2018

Зачем вам нужно создать 2 цикла, каждый из которых запускает команду dir для поиска файлов? Почему бы просто не сделать цикл for /R? Вот пример:

@echo off
set "files=*.E01 *.L01 *.AD"
for /R %%a in (%files%) do echo %%a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...