2012-11-20 31 views
10

Tôi có tệp văn bản trong cùng thư mục với tệp lô của tôi.
Làm cách nào để kiểm tra xem tệp văn bản có chứa một số văn bản nhất định không?

vì vậy tôi muốn tệp lô của tôi đọc nội dung của tệp văn bản và tùy thuộc vào nội dung của tệp văn bản mà tôi muốn tệp đó thực hiện hành động.

ví dụ: nếu tệp văn bản chứa "Hello World" thì hãy thực hiện như bắt đầu VLC nếu nó không chứa Hello World thì hãy làm điều gì đó khác.

Văn bản sẽ tự cập nhật.

đây là mã lô của tôi cho đến nay, nó có thể xuất văn bản từ tệp văn bản trên màn hình.

@echo off 
for /f "tokens=*" %%a in (log.txt) do call :processline %%a 

pause 
goto :eof 

:processline 
echo line=%* 

goto :eof 

:eof 
+0

Tôi nghĩ [câu hỏi này] (http://stackoverflow.com/questions/106053/how-can-i-make-a-batch-file-to-act-like-a-simple-grep-using- perl) có những gì bạn đang tìm kiếm – zbrunson

Trả lời

24

Bạn nên sử dụng hàm FIND hoặc FINDSTR. Nhập HELP FINDHELP FINDSTR từ dấu nhắc lệnh để nhận tài liệu. TÌM là rất đơn giản và đáng tin cậy. FINDSTR mạnh hơn rất nhiều, nhưng cũng rất nóng tính. Xem What are the undocumented features and limitations of the Windows FINDSTR command? để biết thêm thông tin.

Bạn không quan tâm đến đầu ra của một trong hai lệnh, vì vậy bạn có thể chuyển hướng đầu ra tới nul.

Cả hai lệnh đặt ERRORLEVEL thành 0 nếu chuỗi được tìm thấy và 1 nếu không tìm thấy chuỗi. Bạn có thể sử dụng các toán tử &&|| để thực thi điều kiện mã tùy thuộc vào việc chuỗi đã được tìm thấy hay chưa.

>nul find "Hello World" log.txt && (
    echo "Hello World" was found. 
) || (
    echo "Hello World" was NOT found. 
) 

>nul findstr /c:"Hello World" log.txt && (
    echo "Hello World" was found. 
) || (
    echo "Hello World" was NOT found. 
) 

Bạn cũng có thể kiểm tra ERRORLEVEL trong câu lệnh IF, nhưng tôi thích cú pháp ở trên.

+0

nevermind có nó @echo off :) Cảm ơn rất nhiều. – Mowgli

+0

Xin chào, tôi có câu hỏi hy vọng bạn có thể giúp tôi, thay vì log.txt, có cách nào tôi có thể đặt URL nó sẽ chỉ có một liên kết dữ liệu. Cảm ơn – Mowgli

+0

Dường như không làm việc cho tôi. (Hello World không bao giờ được tìm thấy) – Cestarian

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