在命令提示符下,如何获取当前登录的域用户的友好显示名称(即"John Doe"而不是"john.doe")?
ske*_*ank 11
这是一个棘手的方法,我使用批处理文件中的net命令和find命令来完成它:
set command=net user "%USERNAME%" /domain | FIND /I "Full Name"
FOR /F "tokens=1 delims=" %%A in ('%command%') do SET fullNameText=%%A
set fullName=%fullNameText:Full Name=%
for /f "tokens=* delims= " %%a in ("%fullName%") do set fullName=%%a
Run Code Online (Sandbox Code Playgroud)
第一行存储我们要在变量中执行的命令.它从环境变量中提取用户名并将其传递给net user命令以及/domain参数,以告诉它从当前域中提取.然后它将结果从当前用户的一堆数据传递给一个find方法,该方法只会提取我们想要的属性.查找的结果采用"全名John Doe"格式.第二行将执行命令并将结果放入变量中fullNameText.第三行将删除结果的"全名"部分,最后是"John Doe".带有for循环的第四行将从结果中删除所有前导空格,最后在fullName变量中输入"John Doe" .
小智 5
一个字符串中的 Lectrode 答案将是这样的:
for /f "usebackq tokens=2,* delims= " %%a in (`net user "%USERNAME%" /domain ^| find /i "Full Name"`) do set FULLNAME=%%b
Run Code Online (Sandbox Code Playgroud)