批处理获取系统安装时间/系统开机时间/电脑唤醒时间及开机使用时间(三)打卡总结

所用到的DOS知识,自己理解,非官方。
  1. wevtutil qe system /c:1000 /rd:true /f:text >d:\log.txt qe=query-events 从日志或日志文件中查询事件 .system为系统日志。/c:读取的最大条数。 /rd:读取方向,true先看到时间新的。/f:保存文件格式。xml或文本。详细用法见官方:https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/wevtutil#BKMK_examples
  2. findstr /n “Power-Troubleshooter” d:\log.txt >d:\aaa.txt 读取aaa.txt文件中所有包含Power-Troubleshooter的行,不可以只读取单行。/n打印每个匹配行的行号。详细见:https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/findstr
  3. setlocal enabledelayedexpansion 启用延迟环境变量扩展。详见:https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/setlocal
  4. for /f “tokens=1,2 delims=:” %%i in (d:\bbb.txt) do set var=%%i /f最强大的参数,用的最多,但不知道怎么用。 tokens 分几段,delims 分隔标准可以用时写多个,如delims=/,",代码就会按/,"按地全部分开,%%i,i是什么都行,1是i,2是j,以此类推。 (d:\bbb.txt) 括号中的内容单引号、双引号或者不用引号是不一样的,没记住区别。
  5. set /a m+=1& if !m!==1 (echo %%j>d:\bbb.txt)) /a后面的式子会计算,否则不计算。在原代码行中的作用:每迭代一次,m加1,取后显示的只有m为1的内容,效率很低,因为就算只找第一行,代码也会把全部行跑完。 !m! 也是变量,但此只只能用!,不可以用其他。
  6. set wtime_m=%time0:~5,2%%time0:~5,2%中的波浪线表示从变量time0中忽略5个字符,读取2个。
  7. 长行跨行写的时候,前一行要加^.
  8. 批处理的注释为两个冒号::。
  9. if %b_wtime% LEQ 0 (echo 电脑使用时间为:%n_wtime%分钟。) 判断执行内容必须放在括号内。LEQ为比较运算符的小于,GTR为大于。
  10. 在for内的变量为双前百分号:%%a,在其他地方是前后百分号:%a%
  11. | & || &&和python的一样。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章