[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 关闭远程访问之后,获取进程的内存的批处理为何出错?

请教大家个问题,不知道是否有人碰到过?第一次发帖,若是有什么问题,请管理员指出,谢谢!
内容:写了个计划任务,每隔1min执行一次tasklist获取进程的内存使用情况,并输出到文档中。
问题:通过远程桌面访问此windows系统,执行了计划任务,查看输出结果,正确(例如:1024,单位是K)。不停止任务,只是关闭远程访问,等待一段时间,再次远程访问桌面,发现输出不正确了(输出为K)。
详细代码如下:
启动计划任务代码:
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. ::每1分钟监控一次
  4.   md c:\monitorresult
  5.   set MONI=c:\monitorresult
  6.   echo %DATE% %TIME% >>!MONI!\bwclt.txt
  7.   schtasks /create /tn monitor /tr c:\monitor.bat /sc minute
  8.   pause >nul
复制代码
监控代码(monitor.bat):
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. :monitor
  4.    set MONI=c:\monitorresult
  5.    for /f "tokens=5" %%i in ('tasklist /fi "imagename eq system" /nh') do (echo %%i>>!MONI!\system.txt)
  6.   goto :eof
复制代码
另外附上tasklist /fi "imagename eq system" /nh的执行结果为:

你把第二个代码改成这样:
  1. @echo off
  2. set "MONI=C:\monitorresult"
  3. for /f "delims=" %%i in ('tasklist /fi "imagename eq system" /nh') do (
  4.     >>%MONI%\system.txt echo %%i
  5. )
复制代码
观察一下连接远程桌面和端口远程桌面的之后,日志里面记录的内容有何差异。
估计是断开之后,正确的数值跑到了第四列,所以你的tokens=5取不到正确的值。

TOP

tasklist默认输出结果形式是table,将结果输出形式修改为list形式之后,解决了此问题。
  1. for /f "skip=5 tokens=2 delims=:" %%i in ('tasklist /fi "imagename eq system" /fo list') do (echo %%i)
复制代码

TOP

返回列表