批处理仅在特定时刻跳过定界符
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%
我正在尝试使用命令行通过注册表获取我当前的用户名。但是我的用户名在 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%