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

[系统相关] 发现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
复制代码
应验那句“解铃还需系铃人”

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

TOP

也不用这么骂微软吧

TOP

哈,厉害厉害,佩服佩服,晒利晒利~`
你意思是得给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 编辑 ]
Software is like sex: it's better when it's free..!

TOP

原帖由 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才是正确语法

TOP

个人见解,我猜是使用句柄的方法不一样

  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
复制代码

TOP

返回列表