【问题标题】:Command line/Script to list all users profiles in C:\users命令行/脚本列出 C:\users 中的所有用户配置文件
【发布时间】:2021-05-29 03:12:32
【问题描述】:

我正在尝试创建一个非常简单的脚本,它将显示c:\users 中的所有用户配置文件,例如:

%User1%
%User2%

我曾尝试使用带有循环的 WMIC,但它只是挂起......

for /f "tokens=* skip=1" %%a in ('wmic UserAccount get Name') do (
    if not "%%a"=="" (
       
    )
)

任何帮助将不胜感激。

【问题讨论】:

  • 用户配置文件并不总是在C:\Users 中,因此获取这些配置文件的最简单方法是For /D %%G In ("C:\Users\*") Do @Echo %%~nxG。但是,这将返回创建用户帐户时使用的原始名称,不一定是他们现在选择的用户名。您能否请edit您的问题,以明确说明您要实现的目标?

标签: list batch-file profile


【解决方案1】:

与我在my comment 中提供的示例不同,以下示例应仅列出“普通”用户名,他们的本地配置文件位置位于C:\Users 中。

我所说的“正常”是指它应该忽略诸如“默认”、“访客”和“管理员”之类的帐户。

请注意,正如我在前面提到的评论中已经提到的,用户名对于当前在系统中的用户来说是正确的,但不一定是他们的个人资料目录父名称中使用的名称。

@Echo Off & SetLocal EnableExtensions
For /F Tokens^=2^ Delims^=^" %%G In ('%SystemRoot%\System32\wbem\WMIC.exe Path
 Win32_UserProfile Where "Special!='TRUE' And LocalPath Like 'C:\\Users\\%%'"
 Assoc:List 2^>NUL') Do For /F Tokens^=4^ Delims^=^" %%H In ('
 %SystemRoot%\System32\wbem\WMIC.exe UserAccount Where "SID='%%G'" Assoc:List
 /ResultRole:SID 2^>NUL') Do Echo %%H
Pause

如果您打算通过 CLI(而不是通过 GUI)运行此批处理文件,您可以删除脚本底部的 Pause 命令。

您也可以直接在命令提示符中运行它:

For /F Tokens^=2^ Delims^=^" %G In ('%SystemRoot%\System32\wbem\WMIC.exe Path Win32_UserProfile Where "Special!='TRUE' And LocalPath Like 'C:\\Users\\%'" Assoc:List 2^>NUL') Do @For /F Tokens^=4^ Delims^=^" %H In ('%SystemRoot%\System32\wbem\WMIC.exe UserAccount Where "SID='%G'" Assoc:List /ResultRole:SID 2^>NUL') Do @Echo %H

【讨论】:

    【解决方案2】:

    试试这个批处理脚本:

    @echo off
    Call :WMICGET_ECHO UserAccount Name  " Name : "
    Pause & Exit
    ::---------------------------------------------------------------------------------------------------------------------------------------
    rem Based on this answer: https://stackoverflow.com/a/63153964/8262102
    :WMICGET_ECHO
    @for /f "skip=1 delims=" %%a in ('"wmic %1 get %2"') do (@for /f "delims=" %%b in ("%%a") do echo %~3 %%~nb & set "WMICGET_VALUE=%%~nb")
    goto :EOF
    ::---------------------------------------------------------------------------------------------------------------------------------------
    

    【讨论】:

    • 请注意,这列出了所有用户名,而不是位于C:\Users 中的用户名,并且还包括一些不是您所谓的“普通”用户的用户名。
    猜你喜欢
    • 2020-05-06
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多