2013-04-25 9 views
5

Mam duży katalog folderów (wywołaj go C: \ Main). Muszę skonfigurować skrypt wsadowy, aby przeszukać podfoldery tego katalogu pod kątem ciągu znaków w nazwie pliku (nie tekstu w pliku). Mam problem ze znalezieniem odpowiedzi.Wyszukaj ciąg wewnątrz nazwy pliku w podkatalogach

Zasadniczo, muszę wyszukać ciąg "abcd" we wszystkich nazwach plików w C: \ Main \ *. Szukam tylko dopasowań, które są plikiem XML. Więc muszę znaleźć:

C: \ Main \ Secondary1 \ abcd_othertext.xml

C: \ Main \ Secondary2 \ abcd_othertext.xml

C: \ Main \ Secondary3 \ abcd_othertext.xml

wśród wszystkich setek folderów w tym katalogu głównym. Następnie muszę wyprowadzić wszystkie dopasowania (najlepiej do pojedynczych zmiennych w pliku bat, ale to inna puszka z robakami). Z góry dziękuje za twoją pomoc.

Odpowiedz

5

Można użyć pętli Dla/R: http://ss64.com/nt/for_r.html

@Echo OFF 

Set "Pattern=abcd" 

For /R "C:\" %%# in (*.xml) Do (
    Echo %%~nx# | FIND "%Pattern%" 1>NUL && (
     Echo Full Path: %%~# 
     REM Echo FileName : %%~nx# 
     REM Echo Directory: %%~p# 
    ) 
) 

Pause&Exit 

EDIT: ... indywidualnie zmienne:

@Echo OFF 

Set "Pattern=abcd" 

For /R "C:\" %%# in (*.xml) Do (
    Echo %%~nx# | FIND "%Pattern%" 1>NUL && (
     Set /A "Index+=1" 
     Call Set "XML%%INDEX%%=%%~#" 
     Echo Full Path: %%~# 
     REM Echo FileName : %%~nx# 
     REM Echo Directory: %%~p# 
    ) 
) 

CLS 
Echo XML1 = %XML1% 
Echo XML2 = %XML2% 

Pause&Exit 
12

Polecenie DIR można przeprowadzić wyszukiwanie wieloznaczny w podkatalogach . anwser

DIR abcd*.xml /s /b 
+0

miłe małe i proste! –

0

ElektroStudios' z Naprawiono problem z przestrzeni, ukośniki i brakującej litery dysku w drukowanych katalogach:

@ECHO OFF 
SETLOCAL enabledelayedexpansion 

SET "pattern=abcd" 
FOR /R "C:\" %%# in (*.xml) DO (
    ECHO %%~nx# | FIND "%pattern%" 1>NUL && (
     SET current_dir=%~d0%%~p# 
     SET current_dir=!current_dir:\=/! 

     ECHO Directory: "!current_dir!" 
    ) 
) 
Powiązane problemy