Windows 从WMIC查询中排除某些输出

Windows 从WMIC查询中排除某些输出,windows,batch-file,cmd,wmic,findstr,Windows,Batch File,Cmd,Wmic,Findstr,我正在通过wmic(感谢Compo)获得Windows用户及其本地路径的列表 我希望在此wmic命令的输出中排除一些用户名: @For /F "Skip=1Tokens=1,2" %%G In ('%__AppDir__%wbem\WMIC.exe UserAccount Where^ "LocalAccount='True' And Not Name Like '[_]%%'" Get Name^,SID 2^>Nul' )Do @For /F

我正在通过wmic(感谢Compo)获得Windows用户及其本地路径的列表

我希望在此wmic命令的输出中排除一些用户名:

@For /F "Skip=1Tokens=1,2" %%G In ('%__AppDir__%wbem\WMIC.exe UserAccount Where^
 "LocalAccount='True' And Not Name Like '[_]%%'" Get Name^,SID 2^>Nul'
)Do @For /F %%I In ("%%H")Do @For /F "Tokens=2Delims==" %%J In ('
 %__AppDir__%wbem\WMIC.exe Path Win32_UserProfile Where^
 "SID='%%I' And Special!='True'" Get LocalPath /Value 2^>Nul'
)Do @For /F "Tokens=*" %%K In ("%%J")Do @Echo User name:"%%G",Profile path:"%%K"
我不确定如何添加此排除文件:

%__AppDir__%findstr.exe /V /X / L/ /I G:"usernames.txt"
你能帮我吗


谢谢

如果您打算从输出中排除名称,那么提高效率的一般规则是尽快在代码中过滤命令

因此,最有效的方法是在
Where
子句中进行个别排除。我在我的评论中提供了一个如何做到这一点的示例,例如,将以下划线开头的名称(
而不是像“[\u]%”
”这样的名称)的当前排除更改为
和Name!='迪米特里和名字卡琳达和名字!='彼得'

如果文件中每行有一个排除列表,并且有太多的排除列表无法传输到
Where
子句中,那么您应该在该初始
For
循环的
Do
部分执行该过滤。此时,您可以使用
findstr.exe
和您选择的选项(刚刚修复)

由于您从my中选择的代码不是健壮的代码,它适合带有空格/有问题的字符的用户名,因此我建议您也更改为健壮的代码

因此,这将是我建议的答案(不包括使用
findstr.exe的
usernames.txt
中的名称):

(“%SystemRoot%\System32\wbem\WMIC.exe)中的/F令牌^=4Delims^=^“%%G 用户帐户,其中“LocalAccount='TRUE'”Assoc:List/ResultRole:SID 2^>NUL' )在(“%SystemRoot%\System32\wbem\WMIC.exe)中执行@Set/P“=%%G”num&&(For/F”标记=1*Delims==”%%H 用户帐户,其中“Name='%%G'”获取SID/Value 2^>NUL ^|%SystemRoot%\System32\find.exe“=”)Do@For%%J In(%%I )Do@For/F“Tokens=1*Delims==”%%K In(“%SystemRoot%\System32\wbem\WMIC.exe 路径Win32_UserProfile,其中(SID^=“%%J”和Special!^=“TRUE”和LocalPath 不为Null^)获取本地路径/值2^>NUL^|%SystemRoot%\System32\find.exe “=”')Do@For/F令牌^=*%%M In(“%%L” )Do@Echo用户名:%%G,用户配置文件:%%M)
)Do
必须是
)Do
(两个位置),然后追加
|%\uuuu AppDir\uu…
并修复开关…
/V/X/L/I/G:
@Magoo,仅供参考,尽管技术上可能不正确,
)Do
不必是
)Do
,方法与
)Else
不必是
)Else
!您想排除多少用户名?此代码已排除所有o如果是以下划线开头的,那么,假设你有三个,
Peter
Kalinda
,和
Dimitri
,你可以更改
,而不是像“[[uu]这样的名字%%“
to
And Name!='Dimitri'And Name!='Kalinda'And Name!='Peter'
。顺便说一句,对于任何未来的读者来说,OP的代码都是从中摘取的,并不是对他们的回应。a.Joson,尽管在这个问题上感谢我,但我假设你没有放弃我最初的努力,因为我已经将近十个月没有收到任何成果,有什么特别的原因吗原因?我的建议是放弃批处理/WMIC/笨拙的输出和字符串解析,转而使用PowerShell。