2009-01-05 30 views
7

Tôi đang tìm một số ví dụ về một .bat HOẶC kịch bản .wsh có thể làm như sau:Một .bat hoặc .wsh kịch bản mà có thể tìm kiếm cho các tập tin

  • Đệ quy đọc tên tập tin trong một thư mục với một tiện ích mở rộng do người dùng cung cấp (.dll, .exe, v.v.)
  • Tìm kiếm thư mục do người dùng cung cấp cho các tên tệp trên
  • Tạo báo cáo txt hoặc xls của các kết quả, như: x.txt được tìm thấy trong "C : \ temp "," C: \ blah "

TIA.

EDIT:

Rất tiếc, tôi nên làm rõ: có hai thư mục và hai tìm kiếm tại đây.

tìm kiếm 1:

  • Tìm kiếm một người dùng cung cấp thư mục "Dir 1" cho tất cả các * .dll của.

Kiếm 2:

  • Tìm kiếm một người dùng cung cấp thư mục khác nhau "Dir 2" cho tên tập tin được tạo ra trong Tìm kiếm 1. Tìm kiếm này cũng cần phải được đệ quy.

Vì vậy, nếu Tìm kiếm 1 tìm foo.dll, foo2.dll và foo3.dll trong Dir 1, Tìm kiếm 2 sẽ tìm trong Dir 2 cho foo.dll, foo2.dll và foo3.dll và cung cấp báo cáo (danh sách đơn giản) của mỗi tệp được tìm thấy.

Trả lời

9

Đặt sau đây trong một tập tin .bat, nói FindAll.bat:

@echo OFF 

for /f %%F in ('dir %2\%1 /s /b') do (
    <nul (set /p msg=%%~nxF) 
    for /f %%G in ('dir %3\%%~nxF /s /b') do (
     if exist %%G (
      @echo found at %%G 
     ) 
    ) 
) 

%1 là người sử dụng cung cấp tập tin mặt nạ.

%2 là thư mục do người dùng cung cấp để tìm kiếm trước tiên.

%3 là thư mục do người dùng cung cấp để tìm kiếm thứ hai.

Gọi từ dòng lệnh để tạo ra một báo cáo:

FindAll *.dll d:\dir1 d:\dir2 > dll_report.txt 2>&1 

Bí quyết <nul (set /p) sẽ ra văn bản vào giao diện điều khiển mà không có một dòng sản phẩm mới (lịch sự Pax từ chủ đề này: How to code a spinner for waiting processes in a Batch file?)

Các 2>&1 thêm khi gọi tập tin thực thi là cần thiết để nắm bắt tất cả đầu ra của tập tin (theo yêu cầu aphoria từ chủ đề này: Underused features of Windows batch files)

+0

Điều này khiến chúng tôi gần gũi; cần thêm một/s vào dòng đầu tiên. Những gì chúng ta thực sự cần là một cách để tách thư mục khỏi tên tệp trong %% f; ngay bây giờ nó đang tìm kiếm tên tập tin đầy đủ từ dir1 trong dir2. Ngoài ra, tìm kiếm trong dir2 (%% 3) cũng cần được đệ quy. – chrome

+0

OK, tôi đã chỉnh sửa câu trả lời của mình bằng một thứ có thể hoạt động ... –

+0

Tuyệt vời, cảm ơn bạn đã quay trở lại và thay đổi điều này, và cho thấy cách sử dụng & 1. – chrome

18

Tại sao không sử dụng thư mục?

Tìm kiếm thư mục hiện hành và tất cả subdirs cho dlls

dir /S *.dll 

Tìm kiếm tất cả các C trong dlls

dir /S C:\*.dll 

Lưu báo cáo

dir /S C:\*.dll > report.txt 
+0

giống như âm thanh bài tập về nhà? – devio

+0

Không, không phải bài tập về nhà, dự án phụ – chrome

+0

Xem câu trả lời tiếp theo của tôi, làm rõ câu hỏi. – chrome

-3

Tôi sẽ nghiên cứu Robocopy để xem điều này có thể giúp ích không (cờ/L là một đầu mối).

Các vấn đề liên quan