batch-file
बैच में स्ट्रिंग्स खोजें
खोज…
बुनियादी तार खोज
एक निश्चित स्ट्रिंग खोजने के लिए FIND कमांड बड़ी फाइलों को लाइन-बाय-लाइन स्कैन कर सकता है। यह खोज स्ट्रिंग में वाइल्डकार्ड का समर्थन नहीं करता है।
find /i "Completed" "%userprofile%\Downloads\*.log" >> %targetdir%\tested.log
TYPE scan2.txt | FIND "Failed" /c && echo Scan failed || echo Scan Succeeded
FINDSTR कमांड अधिक फीचर पहुंच है, और रेगुलर एक्सप्रेशंस (REGEX) सर्च स्ट्रिंग में वाइल्डकार्ड के साथ खोज का समर्थन करता है।
FINDSTR /L /C:"Completed" Results.txt
echo %%G | findstr /r /b /c:"[ ]*staff.*" >nul && echo Found!
अधिक जानकारी के लिए FIND और FINDSTR सहायता स्रोत देखें।
खोज परिणामों का उपयोग करना
निम्न स्क्रिप्ट से पता चलता है और अधिक उन्नत विभाजन फ़ाइल तकनीक, जहां समारोह के लिए एक निर्देशिका में फ़ाइलों की एक सूची के माध्यम से लूप होता है, और प्रत्येक फ़ाइल सामग्री findstr को पहुंचाया जाता है कि एक स्ट्रिंग सबस्ट्रिंग होने के कारण उसे दिखता var
रिक्त स्थान की अपरिभाषित संख्या से पहले और किसी भी अतिरिक्त द्वारा अधिक्रमण पाठ। एक बार मिल जाने के बाद, खोज की गई फ़ाइल को एक नए के साथ बदल दिया जाता है जिसमें खोज स्ट्रिंग के ऊपर केवल पाठ भाग होता है।
@echo off
setlocal enabledelayedexpansion
pushd "%temp%\Test"
for %%G in ("*.txt") do (set "break="
(for /f "tokens=*" %%H in (%%~G) do (
if not defined break (
echo %%H | findstr /r /b /c:"[ ]*var.*" >nul && set break=TRUE || echo %%H )
)) >> %%~nG_mod.txt
del %%~G & ren %%~nG_mod.txt %%G )
popd
exit /b
ध्यान दें, कैसे सेटिंग को break=TRUE
खोज स्ट्रिंग के 1 घटना मिलने के बाद, खोजे गए फ़ाइल से लूप से बाहर निकलने की अनुमति देता है।