将 WMIC 命令的输出设置为变量 .bat

Setting the output of WMIC commands to variable .bat

我正在尝试将当前登录的用户功能添加到我创建的 .bat 支持菜单中。

我正在尝试获取当前登录用户的用户名。

我已尝试以下操作;

命令;

%MID% 是文件中别处设置的变量。

wmic /node:%MID% computersystem get username

这个returns;

用户名 DOMAIN\USER

我只想获取用户名。

尝试使用标记和 delims 来做到这一点,但似乎无法获得正确的语法,已尝试;

for /f "tokens=1 delims= " %%a ('wmic /node:%MID% computersystem get username') do set CUSER=%%a

CUSER returns 空白。

如有任何帮助,我们将不胜感激。

我知道还有其他方法可以做到这一点,但我觉得完成这个任务将有助于我学习和理解 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

当您跳过 1 行 (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%

使用您的 方法,这可能是我仅检索用户名的方式:

For /F "Skip=1 Tokens=2 Delims=\" %%G In ('""%__AppDir__%wbem\WMIC.exe" /Node:"%MID%" ComputerSystem Get UserName"') Do Set "CUSER=%%G"