操作系统: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 个标记。我该如何修改它以收集时间和日期?
*不要担心计算 datediff,因为一旦我可以正确收集它,我就会在 VBScript 中处理它。
提前致谢,Beems
答案1
首先你能从第二行获取第 7 个标记:
for /f "skip=1 tokens=7" %a in ('quser') do @echo %a
produces1:45
但您也可以使用 a*
将所有内容获取到行尾:
for /f "skip=1 tokens=5*" %a in ('quser') do @echo %b
produces:03/11/2015 1:45 PM
我认为这就是您想要的。
从help for
:
如果 tokens= 字符串中的最后一个字符是星号,则会分配一个额外的变量并接收解析最后一个标记后该行上的剩余文本。