for /f "tokens=3*" %%x in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\devenv.exe"') do set DEVENV="%%x %%y"
%DEVENV% /Command "Edit.Goto 83" "E:\examples.A.cpp"
1 つの注意点 - VS の複数のエディションがインストールされている場合、これにより、最後にインストールされたバージョンが起動されます。
より一般的に:
set REGKEY="HKLM\SOFTWARE\Wow6432Node\BI\Science\AB\exenamehere.exe"
set CPPFILE=C:\SomePathHere\foo.cpp
for /f "tokens=3*" %%x in ('reg query "%REGKEY%"') do set EXE="%%x %%y"
%EXE% /AnyOtherParamsHere "%CPPFILE%"
このようにコマンドライン引数を受け入れることもできます (理想的にはエラー処理もあるでしょう)。%1 は最初の引数で、%2 は 9 までの 2 番目の引数です。9 個を超えるパラメーターを使用することは確かに可能ですが、この質問の範囲を超えています。
set REGKEY="HKLM\SOFTWARE\Wow6432Node\BI\Science\AB\exenamehere.exe"
set FILENAME=%1
for /f "tokens=3*" %%x in ('reg query "%REGKEY%"') do set EXE="%%x %%y"
%EXE% /AnyOtherParamsHere %FILENAME%
ファイルへのパスにスペースが含まれている場合は、このバッチ ファイルを実行するときにスペースを引用する必要があります (例: mybatch.cmd "C:\path with spaces\foo.cpp"
)。
また、役に立つことがわかった場合は、これを回答としてマークすることを忘れないでください。:-)