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"
一个警告 - 如果您安装了多个版本的 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。当然可以使用 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"
)。
另外,如果您发现它有用,请不要忘记将其标记为答案。:-)