したがって、C:\drivers\*
* が多くのサブフォルダーを示している場合、inf ファイルが配置されている場所を見つけて、inf ファイルが配置されているのと同じディレクトリにあるすべてのファイルとすべてのサブディレクトリをコピーします。
見つかったすべての .inf ファイルを自分のディレクトリにコピーするスクリプトを作成するのは簡単です。
FOR /R C:\drivers\ %%a in (*.inf *.cat *.sys) do xcopy /c /h /y %%a C:\test
しかし、同じディレクトリとすべてのサブディレクトリにある他のファイルをコピーするのは困難でした。
たとえば、inf ファイルが C:\drivers\sbdrv\hseries\usb30\amdhub\w7 の下にあり、sys ファイルが x86 のサブフォルダーにある場合、sys ファイルを同じサブフォルダーに保持する必要があります。 -フォルダーですが、C:\test\x86 の宛先の下にあります。
何か案は?
編集:多分これはそれをより簡単にするでしょう。フォルダー内に .inf ファイルが 1 つ見つかるとすぐに、フォルダー全体とすべてのサブフォルダーをテスト用にコピーし、次のフォルダーに移動する必要があります。したがって、最初の .inf ファイルが C:\drivers\sb3045\sb407.inf にあることがわかった場合、フォルダー sb3045 自体をコピーせずに、sb3045 の下のすべてのファイルとフォルダーをコピーしてから、フォルダー C:\drivers\sb4055\drivers に移動する必要があります。 \oem\intel\id6077.inf を開き、intel フォルダー自体をコピーせずに、intel フォルダーの下にあるすべてのファイルとフォルダーをコピーします。
EDIT2:これはうまくいくように見えますが、すべての.infを見つけて、フォルダーごとに複数の.infファイルがある場合は古いファイルをコピーしているため、遅くなります
@エコーオン
SETLOCAL ENABLEDELAYEDEXPANSION
CD\
CD ドライバー
FOR /f "tokens=* delims=" %%B IN ('DIR /b /s /o:gen .inf') DO ( XCOPY "%%~dpB .*" "C:\test\" /e / c/h/y
誰かがよりクリーンで迅速なアイデアを持っている場合は、お知らせください。それまではこれで頑張るしかない。