2015-06-19 4 views
1

Я хочу выполнить действие для выбранной группы людей для этого. Я пробовал написать командную команду, которая отлично работает при выполнении действий для всей группы людей, поэтому я добавил условие if, которое будет выбирать только люди начинают с этого имени строки. Ниже приведен код. Но сейчас это работает.Пакетное программирование - сравнение строки

SetLocal EnableDelayedExpansion 

query session >session.txt 

for /f "skip=2 tokens=2," %%i in (session.txt) DO (
SET _prefix=%i:~0,6% 
IF %_prefix%==myuser (
    logoff %%i 
    ) 
) 

del session.txt 

EndLocal 


Output of query session : 

SESSIONNAME  USERNAME     ID STATE TYPE  DEVICE 
services         0 Disc 
>console   myuser01     1 Active 

Там может быть несколько сессий как myuser02, myuser03 и так далее

+0

Возможно, [это] (http://stackoverflow.com/a/30177832/2861476) может помочь –

ответ

2
for /f "tokens=1,2*" %%a in ('Qwinsta^|find /i "myuser"') DO (
     logoff %%b 
) 

Может быть, это будет легче?

+1

Зачем включать токен 1? Кроме того, FINDSTR будет более точным: 'for/f 'tokens = 2" %% U in (' qwinsta^| findstr/bri "................... myuser "') do logoff %% U' – dbenham

+0

Спасибо dbenham и npocmaka – user4021949