问题描述
我正在尝试将当前登录的用户功能添加到我创建的.bat支持菜单中。
我已经尝试以下内容;
命令;
%MID%是文件中其他位置设置的变量。
wmic /node:%MID% computersystem get username
返回;
用户名 DOMAIN \ USER
我正在尝试仅捕获用户名。
尝试使用令牌和delims来做到这一点,但似乎无法正确获得语法,尝试过;
for /f "tokens=1 delims= " %%a ('wmic /node:%MID% computersystem get username') do set CUSER=%%a
CUSER返回空白。
我们将不胜感激。
我知道还有其他方法可以执行此操作,但是我觉得完成此任务将有助于我学习和理解WMIC和.bat语法,我想非常具体地解决此问题。
提前知道你的脸。
解决方法
如何跳过第一行和最后一行?
for /f "skip=1 tokens=1 delims= " %%a in ('wmic /node:"%MID%" computersystem get username') do if not defined CUSER set CUSER=%%a
当您跳过第一行(skip=1
)时,在第二行中您正在查看是否已定义 %cuser%
。如果不是,则将内容设置为结果。
在下一行,正如将要定义的那样,它什么也不做。
我建议您将/node
放在引号中,因为如果它包含破折号(-
),则可能会失败。
我现在才意识到您只想要username
:
@for /f "tokens=2delims=\" %%a in ('wmic /node:"%MID%" computersystem get username /value ^| findstr "="') do @set CUSER=%%a
echo %CUSER%
,
使用您的wmic方法,这可能是我仅检索用户名的方式:
For /F "Skip=1 Tokens=2 Delims=\" %%G In ('""%__AppDir__%wbem\WMIC.exe" /Node:"%MID%" ComputerSystem Get UserName"') Do Set "CUSER=%%G"