2013-05-15 34 views
8

Xin vui lòng giúp đỡ! Tôi mới tạo tập tin batch.Làm cách nào để tạo một tệp lô để tìm kiếm (các) tệp có phần mở rộng nhất định trong một thư mục?

tôi đang cố gắng để tạo ra một tập tin batch để làm những điều sau đây:

  1. Tìm kiếm file (s) có phần mở rộng tập tin nhất định (tức là .docx) trong một thư mục
  2. Output cả tên tập tin (s) và mở rộng vào một tập tin văn bản (.txt)
  3. Trong tập tin văn bản, tôi muốn thêm một chỉ số trước tên tập tin

Ví dụ, "thư mục 1" có ba tập tin: test1. docx, test2.docx, test3.xlsx Tệp lô sẽ tìm kiếm ba tệp có phần mở rộng bằng .docx và sau đó xuất ra tệp văn bản (tức là search_result.txt)

Trong search_result.txt, nó sẽ có định dạng này:

1 test1.docx
2 test2.docx

ở đây là những gì tôi có cho đến nay được làm # 1 và # 2 mục được đề cập ở trên, nhưng tôi cần trợ giúp để triển khai # 3.

@echo off 
for /r %%i in (*.docx) do echo %%~nxi >> search_result.txt 

Cảm ơn bạn đã trợ giúp.

+0

gì sao "thêm chỉ mục trước tên tệp" nghĩa là gì? –

+0

tôi nghĩ anh ấy có nghĩa là 'số chỉ mục'/số sê-ri: 1, 2, 3 ... @ robert-harvey – tgkprog

+0

xem thêm http://stackoverflow.com/questions/2913231/how-do-i-increment-a- dos-biến-trong-một-cho-f-loop –

Trả lời

4
@echo off 
setlocal enabledelayedexpansion 
set /a counter=1 
for /r %%i in (*.docx) do (

    echo !counter! %%~nxi >> search_result.txt 
    set /a counter=!counter!+1 
) 
endlocal 
0

Giả sử chỉ số chỉ là một số incrementing số lượng các trận đấu, bạn chỉ có thể sử dụng một biến và tăng nó với mỗi lần lặp của vòng lặp. Bạn cần phải kích hoạt mở rộng trễ của các biến này để làm việc, điều này ngăn cản biến được chi tiêu khi vòng lặp được đánh giá lần đầu tiên và cùng một biến mở rộng được sử dụng cho mỗi lần lặp. Sau đó bạn có thể tham khảo biến bằng cách sử dụng! Counter! thay vì% mở rộng%.

Tôi nghĩ rằng một cái gì đó như thế này nên làm việc nhưng tôi đã không chạy nó, do đó bạn có thể cần phải tinh chỉnh nó:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set /a counter=1 
for /r %%i in (*.docx) do (
    echo !counter! %%~nxi >> search_result.txt 
    set /a counter=!counter!+1 
) 
endlocal 

Kiểm tra câu trả lời này cho một số thông tin thêm về trì hoãn mở rộng: How do I increment a DOS variable in a FOR /F loop?

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