windows - 使用WMIC获取用户配置文件列表时出现问题

标签 windows for-loop batch-file wmic

我正在使用以下批处理命令来检索所有本地用户配置文件(也包括域用户):

for /f "delims=" %%I in ('dir /a:d-h /b "%SystemDrive%\Users\*" 2^>nul ^| %SystemRoot%\System32\findstr.exe /i /l /x /v /g:"%bin%\exclude_users.txt"') do (

问题在于该命令有其局限性:它不会真正检查所涉及的用户是否确实拥有一个帐户。

用户Compo为我提供了一种使用WMIC检索配置文件名称的方法。

因此,我最终编写了以下命令:
@For /F "tokens=* skip=1" %%I In ('%__AppDir__%wbem\WMIC.exe UserAccount Get Name ^|%__AppDir__%findstr.exe /i /l /x /v /g:"%bin%\exclude_users.txt"') do (

问题是:它忽略了我的排除文件(每行包含一个用户),并且最终生成了一个没有任何名称的配置文件。

知道如何解决这些问题吗?

最佳答案

@echo off
setlocal

set "bin=%~dp0"

for /f "tokens=* skip=1" %%I in ('
    %__AppDir__%wbem\WMIC.exe UserAccount where Disabled^="FALSE" get Name ^|
    %__AppDir__%WindowsPowerShell\v1.0\powershell -noprofile -command "$input.trim()" ^|
    %__AppDir__%findstr.exe /i /l /x /v /g:"%bin%\exclude_users.txt"
') do echo "%%~I"
wmic输出通过管道传递到powershell进行修剪,然后通过管道传递到findstr
wmic命令将使用where子句排除禁用的帐户。

根据需要更改bin的设置。

关于windows - 使用WMIC获取用户配置文件列表时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61623633/

相关文章:

java - 更新 Java 循环中的总计

php - 需要使用 foreach() 的语法帮助来发布输入

java - 为 Wildfly 服务器运行 add-user.bat 时出错

windows - 命令文件 : translate Windows error message

c++ - 在 C++ 中获取用户的登录 session

python - 在 Python 中访问远程服务器上的 Windows 共享驱动器

python - 无需for循环解决广播错误,加快代码速度

batch-file - 从集合中批量剥离文本/p

batch-file - 如何防止 VBScript 独立运行?

C++线程等待时间