@echo off for %%v in (4.0 3.5 2.0) do ( for /f "tokens=2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\%%v" /v MSBuildToolsPath ') do ( echo Your MSBuild is installed in: %%jMSBuild.exe ) ) 2>NUL
- MSBuild.exeが配置されている場所がHKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\MSBuildToolsPath というレジストリにあるのでそれを取得しようとしています。
- コマンドラインからレジストリの情報を操作するために reg.exe を利用しています。
- reg.exeの出力を加工するために for の文字列パース機能を利用しています。
- for /f のパース動作制御キーワード :
- delims : 未指定の場合は "delims= " (タブ1文字+半角スペース1文字)と同じ
- tokens=2* : %%i に2列目 (ここではREG_SZ) を、 %%j に3列目以降の文字すべて(ここではレジストリの内容)をまとめて格納
- 参考:
- http://www.robvanderwoude.com/ntregistry.php
- http://www.dostips.com/DtTipsStringManipulation.php#Snippets.SplitString
- http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx