2

特定のフォルダ内の特定のファイル拡張子を持つすべてのファイルで「tt1234567」のような文字列を検索したい

これはLinuxで機能します。

find /media/ -name "*.txt" -exec grep -oa "tt[0-9]\{7\}" {} \;

どうすればそれをバッチに書き直すことができますか?多分このようなもの?

cd C:\media\
dir /S /B *.txt >> [A little code that matches (tt[0-9]{7})] >> c:\blabla.txt
4

2 に答える 2

2

編集:問題のある可能性のある引用符を削除しました。
編集:修正されたコード。

FINDSTR.EXEはREGEX標準を正しく実装していないため、[0-9] 0を指定された回数だけ一致させると、AFAIKは機能しません。

cd C:\media\
for /f %%x in ('dir /S /B *.txt') do (
  echo %%x| findstr /r "^tt[0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.[tT][xX][tT]$" >> c:\blabla.txt
)

%%xとの間にスペースを入れないでください。スペースを入れ|ないと一致しなくなります。

FORコマンドを3行に分割する必要はありません。読みやすくするために分割しました。
すべてを削除して1行にまとめることができ(ます)


または、をダウンロードして使用することもできますSED

お役に立てれば!

于 2012-10-20T23:06:16.657 に答える
0

cmd.exeパイプ演算子があるので、

dir /S /B *.txt | findstr "tt[0-9][0-9][0-9][0-9][0.9][0-9][0-9]\.txt$" >> c:\blabla.txt
  • findstr正規表現と大文字と小文字を区別しないオプションがデフォルトでオンになっています。
  • でサポートされている(非常に限定された)正規表現構文は、 TechNetライブラリfindstrに記載されています。
于 2013-06-10T14:37:20.903 に答える