Batch file 批处理文件-发现的程序路径(变量)-从发现的注册表值(路径)运行程序

Batch file 批处理文件-发现的程序路径(变量)-从发现的注册表值(路径)运行程序,batch-file,registry,steam,Batch File,Registry,Steam,我正在尝试创建一个批处理文件,该文件将发现一个EXE(在本例中为Steam)的位置,并使用从注册表中发现的路径运行该EXE。我希望通过注册表发现安装路径的原因是,此批处理文件要在多台计算机上运行,并且Steam安装路径可能不同 注册表是保存这些路径的常量。现在我相信Steam将其安装路径存储在: "HKEY_CURRENT_USER\Software\Valve\Steam\" SteamExe = X:\Path\Steam.exe 所以首先我需要知道如何获取这个值,然后我想知道如何获取该值

我正在尝试创建一个批处理文件,该文件将发现一个EXE(在本例中为Steam)的位置,并使用从注册表中发现的路径运行该EXE。我希望通过注册表发现安装路径的原因是,此批处理文件要在多台计算机上运行,并且Steam安装路径可能不同

注册表是保存这些路径的常量。现在我相信Steam将其安装路径存储在:

"HKEY_CURRENT_USER\Software\Valve\Steam\"
SteamExe = X:\Path\Steam.exe
所以首先我需要知道如何获取这个值,然后我想知道如何获取该值并将其输入到run命令中,以便Steam运行

你能帮忙吗

@echo off

for /f "tokens=1,3" %%E in ('reg query "HKEY_CURRENT_USER\Software\Valve\Steam"') do (
    if %%E==SteamExe echo "%%F"
)

pause
reg query
获取注册表路径的所有键和值

对于/f
访问查询的注册表数据的每一行,并拆分数据,以便“Name”存储在“E”中,“data”存储在“f”中。 如果“E”等于“steam EXE”,则回显“F”,它将显示steam可执行文件路径

命令行版本:

@for /f "tokens=1,3" %E in ('reg query "HKEY_CURRENT_USER\Software\Valve\Steam"') do @if %E==SteamExe @echo "%F"

我用另一种方法,这会奏效的

setlocal

regedit /e reg_exported.tmp "HKEY_CURRENT_USER\Software\Valve\Steam"
find "SteamExe" reg_exported.tmp | findstr "SteamExe" >> line_exported.tmp
set /p SteamPath= < line_exported.tmp
set SteamPath=%SteamPath:~11%

del reg_exported.tmp
del line_exported.tmp

start "Steam" %SteamPath%

endlocal
setlocal
regedit/e reg_exported.tmp“HKEY_当前用户\软件\阀门\蒸汽”
查找“SteamExe”reg_exported.tmp | findstr“SteamExe”>>line_exported.tmp
设置/p蒸汽路径=
谢谢你回复我?对不起,我现在不太喜欢批处理文件。那么您概述的这个命令将返回存储在注册表中的值?我现在如何选择它返回的路径并将当前控制器更改为它返回的路径?为什么不试试看它的功能?仅供参考,steam在安装时使用
steamapps
路径设置全局环境变量。