批处理文件 - 发现的程序路径(变量) - 从发现的寄存器值(路径)运行程序

时间:2012-08-22 08:40:06

标签: batch-file registry steam

我正在尝试创建一个批处理文件,该文件将在这种情况下发现EXE的位置Steam,并使用从注册表中发现的路径运行该EXE。我想通过注册表发现安装路径的原因是因为这个批处理文件要在多台机器上运行而且Steam安装路径可能不同。

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

"HKEY_CURRENT_USER\Software\Valve\Steam\"
SteamExe = X:\Path\Steam.exe

首先,我需要知道如何获取此值,然后我想知道如何获取该值并将其输入到运行命令中,以便Steam运行。

你可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

直接从cmd行执行,显示而不是执行你的exe:
@for /f "tokens=1,2*" %E in ('reg query "HKEY_CURRENT_USER\Software\Valve\Steam\"') do @if %E==SteamExe @echo %G

reg query检索键/名称值对 - 如果它不能立即起作用,请使用它来使其正确。

for /f解析它的输出,如果名称匹配 SteamExe ,则回显值。
删除echo以实际执行(如果您的路径可能包含空格,您可能还想添加引号) 如果从批量替换%%%一起运行并删除@(改为使用@echo off开始批处理)。
有关for语法的更多信息,请从命令行执行help for

答案 1 :(得分:1)

我接近另一种方式,这将有效。

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