web-dev-qa-db-ja.com

文字列検索からフォルダを除外する方法

>>"results\txtmail.txt" findstr /i /p /s mail %userprofile%\*.txt

ここで、C:\ Users\Username\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5を検索から除外したい場合はどうすればよいですか?

1
Daniel

findstrが隠しビットを無視し、隠しフォルダー内のファイルを見つけた後、forコマンド(それを尊重します)を使用して、バッチに向けて次のことを考え出しましたファイル:-

@echo off
pushd %userprofile%
for /r %%f in (*.txt) do echo %%f | findstr "\Temporary" >NUL: || findstr /i /p mail "%%f" nul:
popd

ノート:-

  • ファイル一致内にディレクトリパスを追加したときにfor /rを機能させることができなかったため、pushd/popdを使用しました。
  • 最初のfindstrはファイルパスで\Temporary(これは詳しく説明できます)を探し、2番目のfindstrが見つからない場合にのみ実行します。
  • 2番目のfindstrの追加のnul:パラメータは、ファイル名が見つかった文字列で出力されることを保証します。渡されるファイルが1つしかない場合、通常は省略されます(これを行う別の方法があるかもしれませんが、このコマンドはあまり使用しません)。
  • これを頻繁に行う場合は、インターネットキャッシュをユーザープロファイル外の別のディレクトリに移動することを検討してください。

David Postillのコメントが上に表示されたとき、私はこのソリューションをチェックしていました。気付いたばかりですが、どのソリューションでも考慮する必要のあるいくつかのポイントが追加されるため、とにかく回答を送信します。

2
AFH