命令行/脚本列出C:users中的所有用户配置文件



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

%User1%
%User2%

我已经尝试使用WMIC与循环,它只是挂起....

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

)
)

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

下面的例子,不像我在我的评论中提供的,应该只列出'正常'的用户名,谁有他们的本地配置文件位置在C:Users

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

请注意,正如我在前面提到的评论中已经提到的,UserName对于当前在系统中的用户来说是正确的,但可能不一定是在他们的配置文件目录父名称中使用的名称。

@Echo Off & SetLocal EnableExtensions
For /F Tokens^=2^ Delims^=^" %%G In ('%SystemRoot%System32wbemWMIC.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%System32wbemWMIC.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%System32wbemWMIC.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%System32wbemWMIC.exe UserAccount Where "SID='%G'" Assoc:List /ResultRole:SID 2^>NUL') Do @Echo %H

试试这个批处理脚本:

@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
::---------------------------------------------------------------------------------------------------------------------------------------
dir /B "%systemdrive%users" | findstr /l /v Public

最新更新