我如何正确使用令牌并跳过 REG 查询?

我如何正确使用令牌并跳过 REG 查询?

我正在尝试获取并设置 Steam 安装路径的环境变量,但在从注册表解析路径值时,我很难理解一些事情。我尝试了几种不同的方法(其中一些是在这里或在 Stack Overflow 上找到的)。我最难理解的是理解什么TOKENSSKIP/做什么。以下是我的一些尝试:

v1

for /f "tokens=3" %%a in (`REG QUERY "HKCU\Software\Valve\Steam" /V SteamPath ^|findstr /ri "REG_SZ"') do echo %%a SET STEAMDIR=%%a
explorer %STEAMDIR%

v2

for /f "tokens=3" %%a in (`REG QUERY "HKCU\Software\Valve\Steam" /V SteamPath') do SET REG_SZ=%%a
explorer %STEAMDIR%

v3

FOR /F "skip=3 tokens=3,*" %%A IN (`REG QUERY "HKCU\Software\Valve\Steam" /V SteamPath') do SET "STEAMDIR=%%a
explorer %STEAMDIR%

以下是一些代码,可以完成我对文档文件夹的操作。我测试过很多次,效果很好。确切地正如预期的那样。我尝试了该方法的多个版本SteamPath,但都没有成功,因为我对它缺乏理解,TOKENS而且SKIP我不知道还需要做哪些更改才能适应设置新变量:

FOR /F "USEBACKQ TOKENS=3 SKIP=1" %%I IN (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V Personal`) DO SET DOCUMENTS=%%I
FOR /F "USEBACKQ DELIMS=" %%I in (`ECHO %DOCUMENTS%`) DO SET DOCUMENTS=%%I

我读过的所有内容都说SKIP是用来跳过的“线”。行到底是什么意思?注册表中的某些内容?代码中的某些内容?据我所知,tokens 是指设置变量时使用的令牌数量,即: 。另一个因素是我需要以某种方式补偿路径值,因为它会因用户而异并且可以包含任意数量的空格。我提到这一点是因为据我了解,空格可以改变使用/%%a设置值的方式。我已经检查了 SS64 文档,但在理解它时遇到同样的问题:TOKENSSKIP

https://ss64.com/nt/for_f.html

这是我正在解析的注册表部分的 INI 格式:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Valve\Steam]
"Language"="english"
"SteamExe"="c:/program files (x86)/Valve/steam/steam.exe"
"SteamPath"="c:/program files (x86)/Valve/steam"
"SuppressAutoRun"=dword:00000000
"Restart"=dword:00000000
"RunningAppID"=dword:00000000
"BigPictureInForeground"=dword:00000000
"AutoLoginUser"="XXXXXXXXXXXXXXXX"
"RememberPassword"=dword:00000001
"SourceModInstallPath"="C:\\Program Files (x86)\\Valve\\Steam\\steamapps\\sourcemods"
"Rate"="30000"
"AlreadyRetriedOfflineMode"=dword:00000000
"DWriteEnable"=dword:00000001
"DPIScaling"=dword:00000001
"StartupMode"=dword:00000000
"Skin"=""
"PseudoUUID"="XXXXXXXXXXXXXXXX"
"LastGameNameUsed"="XXXXXXXXXXXXXXXXX"
"ModInstallPath"="D:\\Games\\Steam Library\\steamapps\\common\\Half-Life"
"GameStatsUpload_portal"=dword:0000001d
"SkinV4"=""
"GameStatsUpload_Ep1"=dword:00000016
"GameStatsUpload_Ep2"=dword:00006630

答案1

Windows 10 64 位。

如何使用 for 循环和 reg 查询将程序的安装路径设置为变量。

假设你想将 Steam 安装路径设置为变量。找出 Steam 在哪里写入它的注册表项,找到“SteamPath”条目,将该值存在的键名复制到剪贴板并构建for循环。

对于 Windows 10 64 位,位置为HKLM\SOFTWARE\WOW6432Node\Valve\Steam

命令:

cmd /e /q
for /f "tokens=3*" %a in ('REG QUERY HKLM\SOFTWARE\WOW6432Node\Valve\Steam /v SteamPath ^| Find "SteamPath"') do SET STEAMDIR=%a %b
explorer %steamdir%

脚本:

@echo off
setlocal enableextensions
for /f "tokens=3*" %%a in ('REG QUERY HKLM\SOFTWARE\WOW6432Node\Valve\Steam /v SteamPath ^| Find "SteamPath"') do SET STEAMDIR=%%a %%b
explorer %steamdir%

查找 steam 游戏注册表项

robvanderwoude.com/regsearch

在 serverfault.com 上检测路径中有空格的注册表项

相关内容