我有一个这样的批处理脚本(我可以从Open a file in Visual Studio at a specific line number派生)。任何人都可以告诉我如何传递devenev的注册表项即(HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \ devenv.exe),这样我就不必将路径作为D:\ Progra .. ..并且它可以在安装了visual studio的任何电脑上运行。提前致谢。
@echo off
cd /d D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE
devenv /Command "Edit.Goto 83" "E:\examples\A.cpp"
@echo off
答案 0 :(得分:3)
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"
)。
此外,如果您发现它有用,请不要忘记将此标记为答案。 : - )
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL
FOR /F "tokens=2*" %%A IN (
'REG QUERY "HKLM\SSOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" /v devenv.exe'
) DO (set vs9dir=%%B)
ECHO %vs9dir%
应该在理论上回报你的价值。我无法验证,因为我没有VS.
答案 2 :(得分:0)
你可以尝试这个,它可能会起作用:
for /f "tokens=3*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\devenv.exe"^|find "<NO NAME>"') do set "key=%%j"
echo "%key%"