Jan 31, 2010

MSBuildのパスを探す

@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

No comments:

Post a Comment