在我的任何计算机的用户管理批处理文件中,它会生成用户已授权输入的用户列表,并将其与所有用户的列表进行比较
为实现此目的,我将用户附加到文件的末尾,然后使用
"Wmic useraccount where "localaccount=true" get name > AllUsers.txt"
唯一的问题是获得类似于
的输出 "user1 "
"user2 "
"UnAuthorizedUser "
没有引号,但空间仍然存在,这是一个问题,因为我使用findstr将所有用户与auth用户进行比较
findstr /vig:AuthUsers.txt AllUsers.txt > UnauthorizedUsers.txt
这应输出类似于
的内容 "UnAuthorizedUser"
鉴于user1和user2已获得授权。 问题是它输出空白文本,因为授权用户没有“AllUsers.txt”包含的空格,所以它看到应该是“user1”为“user1______”(假设下划线是空格),因此输出一片空白。
我对所有这一切的问题很简单,是否有一个命令可以删除文本文件的多行上一个单词末尾的空格?或者更好的是让findstr一起忽略这些空格?
答案 0 :(得分:0)
您的问题是WMIC输出是unicode,您的匹配文件是ascii。所以你需要一些方法来使WMIC输出正常ascii。您可以使用另一个FOR命令来执行此操作,该命令将帮助将字符转换为单个字节。
@echo off
(FOR /F "skip=1 delims=" %%G IN ('wmic UserAccount where "LocalAccount=True" get Name') DO (
for /f "delims=" %%H in ("%%G") do @echo %%H |findstr /VIG:AuthUsers.txt
))>UnauthorizedUsers.txt