Giả sử tôi có một số văn bản trong biến được gọi là $ 1. Bây giờ tôi muốn kiểm tra xem $ 1 đó có chứa một chuỗi nhất định không. Nếu nó chứa một chuỗi nhất định tôi muốn in một tin nhắn. Việc in ấn không phải là vấn đề, vấn đề là kiểm tra ... ý tưởng làm thế nào để làm điều đó?Kiểm tra chuỗi cho chuỗi con trong tập tin thực thi (Windows)?
Trả lời
Theo như tôi biết cmd.exe không có chức năng tích hợp để trả lời câu hỏi của bạn trực tiếp. Nhưng nó hiện hỗ trợ thay thế hoạt động. Vì vậy, lừa là: trong $ 1 của bạn thay thế các chuỗi con bạn cần phải kiểm tra sự hiện diện của với một chuỗi rỗng, sau đó kiểm tra nếu $ 1 đã thay đổi. Nếu nó có thì đã làm chứa chuỗi con (nếu không thao tác thay thế sẽ không có gì để thay thế ngay từ đầu!). Xem mã bên dưới:
set longString=the variable contating (or not containing) some text
@rem replace xxxxxx with the string you are looking for
set tempStr=%longString:xxxxxx=%
if "%longString%"=="%tempStr%" goto notFound
echo Substring found!
goto end
:notFound
echo Substring not found
:end
Lưu ý - loại tìm kiếm này không phân biệt chữ hoa chữ thường. Cũng có thể có vấn đề với các ký tự đặc biệt. Nó mạnh mẽ hơn khi sử dụng mở rộng trễ cho cả tìm kiếm/thay thế và kiểm tra bình đẳng. Nhưng chuỗi tìm kiếm không thể chứa '=' char, và chuỗi tìm kiếm không thể bắt đầu bằng '~' hoặc '*'. – dbenham
@dbenham: Nhận xét hoàn toàn công bằng, giải pháp của tôi là hoàn hảo (như cú pháp cmd). –
Thủ thuật tìm kiếm và thay thế SET hoạt động trong nhiều trường hợp, nhưng không hỗ trợ tìm kiếm cụm từ nhạy cảm hoặc cụm từ thông dụng.
Nếu bạn cần tìm kiếm trường hợp nhạy cảm hoặc hỗ trợ biểu thức chính quy có giới hạn, bạn có thể sử dụng FINDSTR.
Để tránh các biến chứng của việc thoát khỏi các ký tự đặc biệt, tốt nhất là nếu chuỗi tìm kiếm nằm trong một biến và cả tìm kiếm và đích đều được truy cập thông qua mở rộng trễ.
Bạn có thể đặt $ 1 vào lệnh FINDSTR bằng lệnh ECHO. Sử dụng ECHO(
trong trường hợp $ 1 không xác định và hãy cẩn thận không thêm các khoảng trống thừa. ECHO !$1!
sẽ echo ECHO is off.
(hoặc bật) nếu $ 1 không xác định, trong khi ECHO(!$1!
sẽ lặp lại một dòng trống nếu không xác định.
FINDSTR sẽ lặp lại $ 1 nếu tìm thấy chuỗi tìm kiếm - bạn không muốn điều đó, do đó bạn chuyển hướng đầu ra tới nul. FINDSTR đặt ERRORLEVEL thành 0 nếu chuỗi tìm kiếm được tìm thấy và 1 nếu nó không được tìm thấy. Đó là những gì được sử dụng để kiểm tra xem chuỗi đã được tìm thấy chưa. &&
và ||
là cú pháp thuận tiện để sử dụng để kiểm tra kết quả phù hợp (ERRORLEVEL 0) hoặc không khớp (ERRORLEVEL không 0)
Hỗ trợ biểu thức chính quy là thô sơ nhưng vẫn hữu ích.
Xem FINDSTR /? để biết thêm thông tin.
Ví dụ biểu thức chính quy này sẽ tìm kiếm $ 1 cho "BEGIN" ở đầu chuỗi, "MID" ở bất kỳ vị trí nào ở giữa và "END" ở cuối. Tìm kiếm phân biệt chữ hoa chữ thường theo mặc định.
set "search=^BEGIN.*MID.*END$"
setlocal enableDelayedExpansion
echo(!$1!|findstr /r /c:"!search!" >nul && (
echo FOUND
rem any commands can go here
) || (
echo NOT FOUND
rem any commands can go here
)
Cách đơn giản nhất trong quan điểm của tôi là thế này:
set YourString=This is a test
If NOT "%YourString%"=="%YourString:test=%" (
echo Yes
) else (
echo No
)
basiclly chuỗi sau ':' được chuỗi bạn đang tìm kiếm và bạn đang sử dụng không trước mặt nếu vì% chuỗi: * % sẽ xóa * khỏi chuỗi làm cho chúng không bằng nhau.
Như với [câu trả lời của Igor] (http://stackoverflow.com/a/8757658/1012053), bài kiểm tra này bỏ qua trường hợp. Ngoài ra, nó là an toàn hơn để sử dụng mở rộng chậm trễ. Cuối cùng, nó không thể được sử dụng nếu chuỗi con chứa '='. – dbenham
- 1. Làm thế nào để nối chuỗi trong một tập tin thực thi Windows?
- 2. Kiểm tra chuỗi con Java
- 3. Kiểm tra xem lệnh có sẵn trong tập tin thực thi
- 4. Kiểm tra chuỗi con tại Ocaml
- 5. Nhúng VBScript bên trong tập tin thực thi của Windows
- 6. Kiểm tra xem chuỗi có chứa chuỗi con
- 7. Kiểm tra chuỗi con của lỗi NSString
- 8. của Windows tập tin thực thi toán tử &&
- 9. Echo chuỗi chính xác trong tập tin batch của Windows?
- 10. Làm thế nào để kiểm tra xem tên tập tin chứa chuỗi trong C#
- 11. Làm thế nào để nối chuỗi trong tập tin batch windows cho vòng lặp?
- 12. Làm thế nào để nối biến với chuỗi hoặc biến trong tập tin thực thi
- 13. Cách kiểm tra xem chuỗi có chứa chuỗi con đã cho không?
- 14. Làm thế nào để kiểm tra nếu một đường dẫn là một tập tin hoặc thư mục trong tập tin thực thi Windows?
- 15. Kiểm tra chuỗi con/chuỗi con gần đúng tồn tại trong một chuỗi dài hơn, bằng Python?
- 16. Kiểm tra chuỗi con trong chuỗi trong Oracle mà không cần LIKE
- 17. Cách tốt nhất để thực hiện chuỗi con trong tập tin batch là gì?
- 18. Cách kiểm tra độ dài chuỗi và sau đó chọn chuỗi con trong Sql Server
- 19. RSpec chuyển đổi các tham số POST thành chuỗi? (Kiểm tra tập tin tải lên)
- 20. Chạy cào từ tập tin thực thi
- 21. làm thế nào để thực hiện các tập tin thực thi chờ đợi cho đến khi một tập tin thực thi hoàn thành?
- 22. Qt tạo tập tin thực thi
- 23. có/không có tập tin thực thi
- 24. Sử dụng StreamReader để kiểm tra xem một tập tin chứa một chuỗi
- 25. C++ 11 thực thi chuỗi constexpr
- 26. chuỗi Parsing trong tập tin batch
- 27. tập tin nhị phân để chuỗi
- 28. Chuỗi thực tập?
- 29. Định cấu hình kiểu kiểm tra cho chuỗi phương pháp?
- 30. Kiểm tra nếu chuỗi không bằng một trong hai chuỗi
bắt đầu tại đây: http://www.dostips.com/DtTipsStringManipulation.php –
Cảm ơn! Doesnt thực sự giúp đỡ ... Tôi đã hy vọng có somethiing dễ dàng hơn. Bất kỳ ý tưởng nào khác? – EOB