これでいけそう?
未確認なので、試してみる。
@echo off setlocal enabledelayedexpansion call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" cd %~dp0 :: 引数で渡されたファイル名を取得 set INPUT_FILE=%1 :: 一時的に出力ファイルを作成 set TEMP_FILE=%~dp0\dumpbin_output.txt :: dumpbin /dependents を実行して、その結果を一時ファイルに保存 dumpbin /dependents "%INPUT_FILE%" > "%TEMP_FILE%" :: 出力からDLLを抽出して表示 echo Extracting dependent DLLs from %INPUT_FILE%... :: "dll" という文字列が含まれる行を抽出 for /f "tokens=*" %%a in ('findstr /i "dll" "%TEMP_FILE%"') do ( set line=%%a echo ------ !line! ------ where !line! rem echo %errorlevel% ) :: 一時ファイルを削除 del "%TEMP_FILE%" endlocal pause
出力はこんな感じ。
********************************************************************** ** Visual Studio 2022 Developer Command Prompt v17.11.2 ** Copyright (c) 2022 Microsoft Corporation ********************************************************************** Extracting dependent DLLs from C:\Users\masa\source\repos\HyperDumpBin\HyperDumpBin\bin\x64\Debug\net8.0\WindowsProject4.exe... -------------------- ------ USER32.dll ------ C:\Windows\System32\user32.dll ------ VCRUNTIME140D.dll ------ C:\Windows\System32\vcruntime140d.dll ------ ucrtbased.dll ------ C:\Windows\System32\ucrtbased.dll ------ KERNEL32.dll ------ C:\Windows\System32\kernel32.dll 続行するには何かキーを押してください . . .
------ xxxx.dll ------
のあとの行に、一つもdllが表示されてなかったら、そのdllはないのだと思われる。
あー、でも、dumpbin、開発PCじゃないPCには入ってないな。。。。
dumpbinだけ開発PCでやって、そのdllについて、対象のPCで、whereすればいいのか、、、
バッチ書いたけど、前提が間違えてた(dumpbinは対象PCには入ってない)ので手動でwhere
やるしかないか、、、