Obtém o Usuário Atual Registrado no Horário (Lote CMD)

1

SO: Windows 7, Windows 8, Windows 8.1

Usando a linha de comando do Windows, posso ver a hora de logon do usuário atual usando o comando quser . Isso resulta em mais resultados do que eu desejo, portanto, espero usar for skip e tokens para obter apenas a hora e a data de logon.

Como exemplo

c:\quser.exe
--------------------------
USERNAME         SESSIONNAME     ID    STATE      IDLE TIME      LOGON TIME
GenericUser      console         1     Active     1:22           03/11/2015 1:45 PM

Usando for , posso reduzir isso, mas está tomando o espaço entre a data e a hora como um delimitador e, portanto, apenas me dando a data:

c:\for /f "skip=1 tokens=6" %a in ('quser') do echo %a
--------------------------
03/11/2015

Observe que a saída está faltando a "1:45 PM". É importante ressaltar que não posso especificar vários tokens porque há apenas 6 cabeçalhos, portanto não consigo obter um 7º token na segunda linha. Como posso modificar isso para coletar a hora e a data?

* Não se preocupe em calcular o datediff, já que vou lidar com isso no VBScript assim que conseguir coletá-lo corretamente.

Obrigado antecipadamente, Beems

    
por Beems 25.03.2015 / 19:55

1 resposta

5

Primeiro, você pode obter o 7º token da segunda linha:
for /f "skip=1 tokens=7" %a in ('quser') do @echo %a produz 1:45
mas você também pode usar um * para colocar tudo no final da linha:
for /f "skip=1 tokens=5*" %a in ('quser') do @echo %b produz: 03/11/2015 1:45 PM
que eu acho que é o que você está procurando.

De help for :

If the last character in the tokens= string is an asterisk, then an additional variable is allocated and receives the remaining text on the line after the last token parsed.

    
por 25.03.2015 / 21:29