นี่อาจเป็นคำถามที่โง่ แต่หลังจากอ่านเอกสารฉันยังไม่แน่ใจว่าจะหาบรรทัดทั้งหมดในไฟล์ที่มี ".cpp" หรือ ".h" ได้อย่างไร
มีวิธีทำเช่นนั้นหรือไม่?
ตัวอย่าง (ไม่ทำงาน):
findstr /i .cpp,.h // , == OR
นี่อาจเป็นคำถามที่โง่ แต่หลังจากอ่านเอกสารฉันยังไม่แน่ใจว่าจะหาบรรทัดทั้งหมดในไฟล์ที่มี ".cpp" หรือ ".h" ได้อย่างไร
มีวิธีทำเช่นนั้นหรือไม่?
ตัวอย่าง (ไม่ทำงาน):
findstr /i .cpp,.h // , == OR
คำตอบ:
ลองใช้วิธีนี้กับคุณ
findstr /i "\.cpp \.h" myfile.txt
ล้อมทั้งภายในเครื่องหมายคำพูดและคั่นด้วยช่องว่าง หมายเหตุคุณยังต้องหลบหนี ในทั้งคู่
หากคุณต้องการรวมวลี (คำที่คั่นด้วยช่องว่าง) คุณสามารถทำได้:
findstr /i /c:"IBSS" /c:"WDI Version" /c:"Soft Ap"
หรือหากคุณได้รับแถวที่ไม่ต้องการคุณสามารถยกเว้นได้โดยใช้/v
พารามิเตอร์ด้วย:
findstr /i /c:Hosted /c:Version /c:Driver | findstr /v /i /c:drivers /c:native
(ทดสอบใน Windows 7 และ Windows 10)
FindStr /V /I /C:"Native" /C:"Drivers" | FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver"
วิธีการสร้างOR
ตรรกะขึ้นอยู่กับสิ่งที่คุณกำลังมองหาและการเปลี่ยนแปลงในอนาคตที่คาดการณ์ไว้ถ้ามี
หากเป็นรายการข้อความค้นหาที่ไม่มีช่องว่างคุณสามารถทำได้เช่นนี้รวดเร็ว & สกปรก:
findstr "thing1 thing2 thing3 thing4 thing5"
และหากมีสิ่งเหล่านี้อยู่ก็จะประเมินเป็นจริงและออกจาก 0
หากสิ่งที่คุณต้องการมีพื้นที่ว่างคุณต้องใช้findstr
สตริงการค้นหาตามตัวอักษรกับ/c:""
ชนิดของพารามิเตอร์ คุณยังสามารถใช้พารามิเตอร์ประเภทนี้หากไม่มีช่องว่าง
/C:string Uses specified string as a literal search string.
อย่างไรก็ตาม , คุณไม่สามารถใช้ร่วมกับตัวอักษรได้อย่างรวดเร็วและสกปรก ตัวอย่างเช่นสิ่งนี้จะไม่ทำงาน:
findstr "thing1 thing2" /c:"thing3 thingy"
คุณต้องแปลงพารามิเตอร์ก่อนหน้าเป็นพารามิเตอร์ตามตัวอักษรดังนี้:
findstr /c:"thing1" /c:"thing2" /c:"thing3 thingy"
ด้วยเหตุนี้จึงเป็นวิธีปฏิบัติที่ดีกว่าในการใช้ตัวเลือกตามตัวอักษรเพราะมันจะขยายขนาดได้ดีขึ้นด้วยสคริปต์แบบไดนามิก อย่างไรก็ตามหากเป็นเพียงชุดข้อความค้นหาที่ไม่มีช่องว่างวิธีที่รวดเร็วและสกปรกน่าจะพอเพียง
FindStr /I /R /C:"Hosted" /C:"Version /C:"Driver[^S]" | FindStr /v /i /c:"Native"