1

ОС: Windows 7, Windows 8, Windows 8.1

Используя командную строку Windows, я могу увидеть время входа текущего пользователя с помощью команды quser . Это приводит к увеличению выхода , чем я хочу, так что я надеюсь использовать for skip и tokens , чтобы получить только время входа в систему и дату.

В качестве примера

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

Используя for , я могу уменьшить это, но он берет пробел между датой и временем и, следовательно, только дает мне дату:

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

Обратите внимание, что на выходе отсутствует «1:45 PM». Следует отметить, что я не могу указать несколько токенов, потому что есть только 6 заголовков, поэтому я не могу получить 7-й токен из второй строки. Как я могу изменить это, чтобы собрать время, а также дату?

* Не беспокойтесь о вычислении даты, так как я буду обрабатывать ее в VBScript, как только смогу ее правильно собрать.

Заранее спасибо, Бимс

1 ответ1

5

Во-первых, вы можете получить 7-й токен из второй строки:
for /f "skip=1 tokens=7" %a in ('quser') do @echo %a производит 1:45
но вы также можете использовать * чтобы получить все до конца строки:
for /f "skip=1 tokens=5*" %a in ('quser') do @echo %b производит: 03/11/2015 1:45 PM
что я думаю, это то, что вы после.

Из help for:

Если последний символ в строке tokens = является звездочкой, то дополнительная переменная выделяется и получает оставшийся текст в строке после анализа последнего токена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .