批处理仅在特定时刻跳过定界符

Batch to skip delimiter only to a certain moment

我正在尝试使用命令行通过注册表获取我当前的用户名。但是我的用户名在 space 之间有两个单词。例如:“猫狗”。好吧,如果我使用 space 作为分隔符,它只会打印 'Cat',如果我输入 tokens=3,它也会打印同样的结果,因为这两个词之间有一个 space。

我这样做是为了在多台计算机上使用,所以我无法确定每台计算机的确切用户名。我如何从令牌编号的第一个单词 3 到结尾分隔,而不管它有多少 space?

@echo off
for /f "tokens=3" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData /v LoggedOnUser') do (
set "user=%%a")
set "user=%user:.\=%"
echo %user%
pause

您有什么理由不能使用 whoami 命令吗?例如:

for /f "tokens=*" %%g in ('whoami') do set "user=%%g"

Windows 在环境

中有一个系统变量 %username%
echo %username%