わかりました、私はこれを段階的に行います:
ステップ1:
set dir="C:\...[path to root directory]"
where /r %dir% *.zip *.iso *.rar >> log.txt
where
Windows 7 を使用している場合は、ユーティリティがコンピュータ上にある必要があります。
ステップ2:
ren log.txt log.tmp
for /f "delims=." %%a in (log.tmp) do (Echo %%a >> log.txt)
del log.tmp
上記のコードは、ピリオドを含むファイル名を処理しません
ステップ 3:
for /f "tokens=*" %%a in (log.txt) do (
where /r %dir% %%a* >> files.txt
)
上記が機能するかどうか 100% 確信があるわけではありません。機能しない場合は教えてください。
ステップ 4:
Rem This code will handle file paths to directories
Ren files.txt files.tmp
for /f "tokens=*" %%a in (files.tmp) do (
Echo %%~pa >> files.txt
)
del files.tmp
Rem The below code will ged rid of repeated direcotries
ren files.txt files.tmp
Echo. > files.txt
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (files.tmp) do (
set var=1
for /f "tokens=*" %%b in (files.txt) do (
if "%%~a" equ "%%~b" set var=0
)
if !var!==1 Echo %%a >> files.txt
)
del files.tmp
そして、私はそれがうまくいくはずだと確信しています。もちろん、私はこれをテストしていませんが、@Echo on
エラーが発生した場合にあなたを助けることができるように、各セクト間で (または個別のバッチ ファイルとして) 一時停止コマンドを使用してこれらすべてを実行します。
これがお役に立てば幸いです、モナ。