ファイルを検索できる.batまたは.wshスクリプト
-
03-07-2019 - |
質問
次のことができる.batまたは.wshスクリプトの例を探しています。
- ユーザーが指定した拡張子(.dll、.exeなど)を持つディレクトリ内のファイル名を再帰的に読み取る
- 上記のファイル名についてユーザー指定のディレクトリを検索
- x.txtが<!> quot; C:\ temp <!> quot;、<!> quot; C:\ blah <!> quot;で見つかったという結果のtxtまたはxlsレポートを生成します。
TIA。
編集:
おっと、明確にする必要があります。ここには2つのディレクトリと2つの検索があります。
検索1:
- ユーザーが指定したディレクトリを検索<!> quot; Dir 1 <!> quot;すべての* .dllについて。
検索2:
- ユーザーが指定した別のディレクトリを検索<!> quot; Dir 2 <!> quot;検索1で生成されたファイル名用。この検索も再帰的である必要があります。
したがって、検索1がDir 1でfoo.dll、foo2.dllおよびfoo3.dllを検出した場合、検索2はDir 2でfoo.dll、foo2.dllおよびfoo3.dllを探し、レポートを提供する必要があります(単純な見つかった各ファイルのリスト。
解決
.batファイルに以下を入力します。たとえば、FindAll.bat
:
@echo OFF
for /f %%F in ('dir %2\%1 /s /b') do (
<nul (set /p msg=%%~nxF )
for /f %%G in ('dir %3\%%~nxF /s /b') do (
if exist %%G (
@echo found at %%G
)
)
)
%1
はユーザーが指定したファイルマスクです。
%2
は、最初に検索するユーザー指定のディレクトリです。
%3
は、2番目に検索するためにユーザーが指定したディレクトリです。
コマンドラインから呼び出してレポートを生成します。
FindAll *.dll d:\dir1 d:\dir2 > dll_report.txt 2>&1
<nul (set /p)
トリックは、新しい行なしでテキストをコンソールに出力します(このスレッドからの Pax :< a href = "https://stackoverflow.com/questions/368041/how-to-code-a-spinner-for-waiting-processes-in-a-batch-file#371276">スピナーを待機用にコーディングする方法バッチファイルで処理しますか?)
ファイルへのすべての出力をキャプチャするには、バッチファイルの呼び出し時に追加される2>&1
が必要です(礼儀 aphoria このスレッドから: Windowsバッチファイルの未使用の機能)
他のヒント
ディレクトリを使用しない理由
dllの現在のディレクトリとすべてのサブディレクトリを検索
dir /S *.dll
すべてのCでdllを検索する
dir /S C:\*.dll
レポートを保存
dir /S C:\*.dll > report.txt
これが役立つかどうかを確認するためにRobocopyを調べます(/ Lフラグが手掛かりです)。