从批处理文件中的文本文件中过滤行

时间:2016-11-29 20:14:02

标签: batch-file

我的任务是创建一个登录脚本,用于注销用户放弃的会话。我从Microsoft找到了这个看起来很有希望的开始。

我修改了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)。我可以识别并过滤包含>?

的行

1 个答案:

答案 0 :(得分:3)

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

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

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