質問

次のことができる.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フラグが手掛かりです)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top