batch-file
バッチで文字列を検索する
サーチ…
基本的な文字列検索
FINDコマンドは、大きなファイルを1行ずつスキャンして特定の文字列を検索することができます。検索文字列のワイルドカードはサポートされていません。
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ヘルプ・ソースを参照してください。
検索結果の使用
次のスクリプトは、高度な分割ファイル手法を示しています 。ここで、FOR関数はディレクトリ内のファイルのリストをループし、各ファイルの内容は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
set break=TRUE
設定すると、最初に検索文字列が見つかると、検索されたファイルからFORループを終了することができます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow