我正在尝试获取并设置 Steam 安装路径的环境变量,但在从注册表解析路径值时,我很难理解一些事情。我尝试了几种不同的方法(其中一些是在这里或在 Stack Overflow 上找到的)。我最难理解的是理解什么TOKENS
是SKIP
/做什么。以下是我的一些尝试:
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 文档,但在理解它时遇到同样的问题:TOKENS
SKIP
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%