Batch file 如何使用批处理脚本获取注册表项的值?

Batch file 如何使用批处理脚本获取注册表项的值?,batch-file,batch-processing,Batch File,Batch Processing,我有一个这样的批处理脚本(我可以从中派生)。有谁能告诉我如何传递devenev的注册表项,即(HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App path\devenv.exe),这样我就不必将路径指定为D:\Progra…并且它可以在安装了visual studio的任何pc上运行。提前谢谢 @echo off @ECHO OFF SETLOCAL FOR /F "tokens=2*" %%A IN (

我有一个这样的批处理脚本(我可以从中派生)。有谁能告诉我如何传递devenev的注册表项,即(HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App path\devenv.exe),这样我就不必将路径指定为D:\Progra…并且它可以在安装了visual studio的任何pc上运行。提前谢谢

@echo off

@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%
cd/d:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE

devenv/Command“Edit.Goto 83”E:\examples\A.cpp“

@echo off

@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

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”


此外,如果您发现它有用,请不要忘记将其标记为答案。:-)

您可以试试这个,它可能有用:

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%"
对于('reg query“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App path\devenv.exe”^ | find“”)中的/f“tokens=3*”%%i,请设置“key=%j”
回显“%key%”

为什么不将路径D:\Program Files\…\IDE添加到path环境变量中?如果路径不是“E\examples.A.cpp”,则可能重复如果它是另一个注册表项HKLM\SOFTWARE\Wow6432Node\BI\Science\AB…我如何将其传递到您提供的代码中。提前谢谢。嘿..我刚刚将我的cpp移动到示例文件夹中,并将其放入D:\Program Files\VideoLAN\VLC…现在是注册表项名称(文件夹)是HKEY_LOCAL_MACHINE\SOFTWARE\VideoLAN\VLC,我需要值名InstallDir.的值数据,这样我就可以将path\examples.A.cpp附加到值数据(实际上是路径-D:\Program Files\VideoLAN\VLC)…这样我就可以将路径作为%2传递。代码类似于%DEVENV%/命令“Edit.Goto%1”“D:\Program Files\VideoLAN\VLC\%2”,但我不希望将路径作为D:\Pro传递…但要使用InstallDir的注册表值。请提前感谢