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"
)。
另外,如果您發現它有用,請不要忘記標記爲答案。 :-)
爲什麼不只是添加路徑d:\ Program Files文件\ ... \ IDE到PATH環境變量? –
可能的重複http://stackoverflow.com/questions/445167/how-can-i-get-the-value-of-a-registry-key-from-within-a-batch-script –