【问题标题】:Setting the output of WMIC commands to variable .bat将 WMIC 命令的输出设置为变量 .bat
【发布时间】:2020-08-18 10:02:11
【问题描述】:

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

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

我尝试了以下方法;

命令;

%MID% 是在文件的其他位置设置的变量。

wmic /node:%MID% computersystem get username

返回;

用户名 域\用户

我正在尝试仅捕获用户名。

尝试使用标记和分隔符,但似乎无法正确获取语法,尝试过;

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

CUSER 返回空白。

我们将不胜感激。

我知道还有其他方法可以做到这一点,但我觉得完成这项任务将有助于我学习和理解 WMIC 和 .bat 语法,我想非常具体地解决这个问题。

提前欣赏你的脸。

【问题讨论】:

    标签: batch-file wmic


    【解决方案1】:

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

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

    【讨论】:

    • 这绝对是一种享受,我可以阅读并理解它为什么有效,谢谢
    【解决方案2】:

    跳过第一行和最后一行怎么样?

    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 放在引号中,因为如果它包含破折号 (-),它可能会失败。

    【讨论】:

    • 感谢您的回复,我相信这会奏效,但使用其他方法,谢谢您抽出时间与我分享
    【解决方案3】:

    我现在才意识到你只想要username

    @for /f "tokens=2delims=\" %%a in ('wmic /node:"%MID%" computersystem get username /value ^| findstr "="') do @set CUSER=%%a
    echo %CUSER%
    

    【讨论】:

    • 感谢您的回复,我相信这会奏效,但使用其他方法,谢谢您抽出时间与我分享
    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2017-04-20
    • 2020-12-19
    • 2022-09-27
    • 2022-08-06
    相关资源
    最近更新 更多