2016-11-29 102 views
1

我的任务是创建将注销用户放弃的会话的登录脚本。我从Microsoft中发现了这个看起来很有希望的开始。从批处理文件中的文本文件中过滤行

我修改了微软的脚本,现在已经有了。

query session %username% >session.txt 
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i 
del session.txt 

这会生成如下所示的session.txt。

SESSIONNAME  USERNAME     ID STATE TYPE  DEVICE 
rdp-tcp#66  someuser     3 Active      
>rdp-tcp#67  someuser     12 Active      

我的脚本当前跳过第一行,解析剩余的两行并通过ID注销会话。我想改变这种行为,使得我只注销放弃的会话(3)而不是我当前的会话(12)。我可以识别并过滤包含>的行吗?

回答

3

您不需要日志文件。这只会减慢你的脚本:

for /f "skip=1 tokens=3 eol=>" %%a in ('query session %username%') do set "sessionToKill=%%a" 
echo %sessionToKill% 

eol=>将跳过每行开头>。您可以将注销逻辑直接放在for循环中,而不是set

+0

fyi,我打了Mofi [here](http://chat.stackoverflow.com/transcript/message/34395679#34395679),他正在帮忙进行一些清理工作。此评论在一段时间后自动删除。 – Drew

相关问题