获取当前用户登录时间(CMD 批处理)

Bee*_*ems 1 windows-7 batch vbscript cmd.exe

操作系统:Windows 7、Windows 8、Windows 8.1

使用 Windows 命令行,我可以使用该quser命令查看当前用户的登录时间。这会导致比我想要的更多的输出,所以我希望使用for skiptokens仅获取登录时间和日期。

举个例子

c:\quser.exe
--------------------------
USERNAME         SESSIONNAME     ID    STATE      IDLE TIME      LOGON TIME
GenericUser      console         1     Active     1:22           03/11/2015 1:45 PM
Run Code Online (Sandbox Code Playgroud)

使用for,我可以减少它,但它以日期和时间之间的空格作为分隔符,因此只给我日期:

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

请注意,输出缺少“1:45 PM”。值得注意的是,我无法指定多个标记,因为只有 6 个标头,因此我无法从第二行获取第 7 个标记。如何修改它以收集时间和日期?

*不要担心计算日期差异,因为一旦我可以正确收集它,我将在 VBScript 中处理它。

提前致谢,比姆斯

wmz*_*wmz 5

首先,您可以从第二行获得第 7 个标记:
for /f "skip=1 tokens=7" %a in ('quser') do @echo %a生产,1:45
但您也可以使用 a*将所有内容都放到行尾:
for /f "skip=1 tokens=5*" %a in ('quser') do @echo %b生产:03/11/2015 1:45 PM
我认为这就是您所追求的。

来自help for

如果tokens= 字符串中的最后一个字符是星号,则分配一个附加变量并在解析最后一个标记后接收行上的剩余文本。

  • @Beems `for` 变量由 cmd 隐式创建,从您指定的第一个开始,因此在这种情况下,`%a` 指代标记 5(这是您感兴趣的 ** 之前的最后一个标记),而 `%b` 指代该行的其余部分(减去任何前导空格) (2认同)