6

次のことができる .bat OR .wsh スクリプトの例を探しています。

  • ユーザー指定の拡張子 (.dll、.exe など) を持つディレクトリ内のファイル名を再帰的に読み取る
  • ユーザーが指定したディレクトリで上記のファイル名を検索します
  • 次のような調査結果の txt または xls レポートを生成します。x.txt は "C:\temp"、"C:\blah" で見つかりました

ティア。

編集:

おっと、明確にする必要があります。ここには 2 つのディレクトリと 2 つの検索があります。

検索 1:

  • ユーザーが指定したディレクトリ「Dir 1」ですべての *.dll を検索します。

検索 2:

  • 検索 1 で生成されたファイル名について、ユーザーが指定した別のディレクトリ "Dir 2" を検索します。この検索も再帰的である必要があります。

したがって、検索 1 がディレクトリ 1 で foo.dll、foo2.dll、および foo3.dll を見つけた場合、検索 2 はディレクトリ 2 で foo.dll、foo2.dll、および foo3.dll を検索し、次のレポート (単純なリスト) を提供する必要があります。見つかった各ファイル。

4

3 に答える 3

18

なぜdirを使わないのですか?

現在のディレクトリとすべてのサブディレクトリで dll を検索します

dir /S *.dll

すべての C で dll を検索

dir /S C:\*.dll

レポートを保存する

dir /S C:\*.dll > report.txt
于 2009-01-05T22:27:42.373 に答える
9

次のように.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最初に検索するユーザー指定のディレクトリです。

%32番目に検索するユーザー指定のディレクトリです。

コマンドラインから呼び出して、レポートを生成します。

FindAll *.dll d:\dir1 d:\dir2 > dll_report.txt 2>&1

この<nul (set /p)トリックは、新しい行なしでコンソールにテキストを出力します(このスレッドからの提供: Pax :バッチファイルで待機中のプロセス用のスピナーをコーディングする方法は?

2>&1バッチファイルを呼び出すときに追加されるのは、ファイルへのすべての出力をキャプチャするために必要です(このスレッドからの礼儀のアポリア:Windowsバッチファイルの十分に活用されていない機能

于 2009-01-06T02:27:11.907 に答える
-3

Robocopy を調べて、これが役立つかどうかを確認します (/L フラグが手がかりです)。

于 2009-01-06T00:38:29.007 に答える