Board logo

标题: [系统相关] 发现Wimc的一个低级BUG及解决方法 [打印本页]

作者: fastslz    时间: 2008-1-21 12:59     标题: 发现Wimc的一个低级BUG及解决方法

  1. @echo off
  2. set keyname=微软真垃圾
  3. set /p=%keyname%<nul>name.txt
  4. wmic /?
  5. pause
复制代码
本来只是用set/p生成一个不带换行符的文本,没想到此后wmic任何参数不起作用了。
BUG症状光标闪烁批处理被中断,环境WinXP SP2,我原来的批处理代码很长,挖出这个臭虫用了N天,本以为代码某部分不稳定,原来被这个低级臭虫整了,真郁闷~



也不知道是set/p的问题还是wmic的问题,解决方法
  1. @echo off
  2. set keyname=微软真垃圾
  3. set /p=%keyname%<nul>name.txt
  4. set /p=<nul>nul
  5. wmic /?
  6. pause
复制代码
应验那句“解铃还需系铃人”
作者: fastslz    时间: 2008-1-21 15:51

看来问题还是出在set/p参数方面
  1. @echo off
  2. set keyname=微软真垃圾
  3. >name.txt set/p=%keyname%<NUL
  4. wmic /?
  5. pause
复制代码

作者: xxx3212    时间: 2008-1-21 19:53

也不用这么骂微软吧
作者: somebody    时间: 2008-1-22 22:26

哈,厉害厉害,佩服佩服,晒利晒利~`
你意思是得给set/p 加个换行是吧````

  1. C:\Documents and Settings\kimhoo>set /p=somebody<nul&wmic /?
复制代码


好象并不是你所说的那样,如上代码,一个回车就能执行 wmic /? 了
并不需要两个回车,也就是说,执行完 set/p=somebody<nul不需要再给一个回车才能执行 wmic /?

[ 本帖最后由 somebody 于 2008-1-22 22:30 编辑 ]
作者: fastslz    时间: 2008-1-23 00:58

原帖由 somebody 于 2008-1-22 22:26 发表
哈,厉害厉害,佩服佩服,晒利晒利~`
你意思是得给set/p 加个换行是吧````


C:\Documents and Settings\kimhoo>set /p=somebody


你理解错了,我上面说过了set /p 只是获得一个不带换行符的文本,也就16进制0D0A
从这个例子里可以得出>name.txt set/p=%keyname%<nul才是正确语法
作者: wxcute    时间: 2008-12-21 15:17     标题: 个人见解,我猜是使用句柄的方法不一样

  1. @echo off
  2. set keyname=微软真垃圾
  3. set /p=%keyname%<nul>name.txt 3>con
  4. wmic/?
  5. pause
复制代码
  1. @echo off
  2. set keyname=微软真垃圾
  3. set /p=%keyname%<nul>name.txt
  4. echo.|wmic/?
  5. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2