2013-04-25 44 views
5

Tôi có một thư mục lớn gồm các thư mục (gọi là C: \ Main). Tôi cần phải thiết lập một tập lệnh batch để tìm kiếm các thư mục con của thư mục đó cho một chuỗi bên trong tên tệp (không phải là văn bản bên trong tệp). Tôi gặp khó khăn khi tìm câu trả lời.Tìm chuỗi trong tên tệp trong thư mục con

Về cơ bản, giả sử tôi cần tìm chuỗi "abcd" trong tất cả tên tệp trong C: \ Main \ *. Tôi chỉ đang tìm các kết quả phù hợp là một tệp XML. Vì vậy, tôi cần phải tìm:

C: \ Main \ Secondary1 \ abcd_othertext.xml

C: \ Main \ Secondary2 \ abcd_othertext.xml

C: \ Main \ Secondary3 \ abcd_othertext.xml

trong tất cả hàng trăm thư mục trong thư mục chính đó. Sau đó, tôi cần xuất tất cả các kết quả phù hợp (lý tưởng cho các biến riêng lẻ trong một tệp dơi, nhưng đó là một loại sâu khác nhau). Cảm ơn trước sự giúp đỡ của bạn.

Trả lời

5

Bạn có thể sử dụng một vòng lặp Ví/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: ... Để từng biến:

@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

Lệnh DIR có thể thực hiện tìm kiếm ký tự đại diện trong các thư mục con . anwser

DIR abcd*.xml /s /b 
+0

đẹp nhỏ và dễ dàng! –

0

ElektroStudios' với vấn đề cố định với không gian, những dấu xồ nguợc và thiếu ký tự ổ đĩa trong thư mục in:

@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!" 
    ) 
) 
Các vấn đề liên quan