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

问题描述

我正在尝试将当前登录用户功能添加到我创建的.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%
,

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

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