go get でインストールされる実行ファイル置き場をバッチファイルで得る

%GOPATH%\bin と書いてしまいがちだが

  • %GOPATH% が未定義の時
    • %USERPROFILE%\go が代替として使われる
  • %GOPATH% に複数のディレクトリが登録されている時

ので、一工夫必要だ。

@echo off

setlocal

if "%GOPATH%" == "" (
    set "DIR=%USERPROFILE%\go"
) else (
    set "DIR=%GOPATH%"
)

for /F "delims=;" %%I in ("%DIR%") do set "GOBIN=%%I\bin"

echo GOBIN=%GOBIN%

endlocal

思ったほど大した工夫は要らなかった…