[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 1# taofan712
  1. tasklist|find /i "qq"
复制代码
除以上代码以外都可获得正确的结果,说明参与的程序和命令都没有问题。

使用以下代码经多次连续测试
  1. tasklist|find /i "csrss"
复制代码
发现屏幕显示状况有4种:
1. 看不到find输出的任何结果;
2. 看到find输出的结果一闪而过;
3. 看到find输出的结果只有后半行;
4. 看到find输出的完整结果。

使用以下筛选命令,无法获取tasklist的完整输出。
  1. tasklist|more
复制代码
使用以下筛选命令,则可以。
  1. tasklist|sort
复制代码
经分析,揣想是tasklist的特殊性(进程存在与否的信息是动态的),tasklist不止一次的操作句柄1,而cmd环境下只有一个共享的句柄1,
导致find对句柄1在内存中虽然完成操作,但还没来得及送往显存就被后续的句柄1(tasklist第二次操作句柄1)清空、或来不及清空造成的。
如果真是这样,那么给进程tasklist再加一个句柄2,让tasklist不会马上又请求句柄1,让find的句柄1有完全喘息的时间。
不知是否有点牵强附会,不过下面的代码能够解决LZ的命令中产生的不正常现象:
  1. tasklist 2>nul|find /i "qq"
复制代码
  1. tasklist 2>&1|find /i "qq"
复制代码
1

评分人数

    • taofan712: 非常感谢。另外论坛搜索“句柄”无果,能多 ...技术 + 1

TOP

回复 4# GNU


    是哪个地方无法重现?

TOP

回复 5# CrLf


    这样使用tasklist的内部筛选参数更可靠,值得采纳!

TOP

回复 8# 老刘1号

如果没有代码洁癖,这样运行即可靠,输出又简洁!

TOP

返回列表