[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
相关代码先放出来阿,难道要别人先猜出你的代码再帮你测试不成。

TOP

这是重定向符在做怪

你试下
taskkill /im notepad.exe /f 2>nul
taskkill /im notepad.exe /f>nul 2>con

再试下在 taskkill 前面加一行
echo+

你会发现 set/p 的显示与 taskkill 的输出是在同一行,这是问题的关键。
因为是在同一行,taskkill 就把前面的 4 个 > 符号当作是自己的输出来处理了,第一个 1>nul 其实已经把它们屏蔽掉了,只是由于不是同一条语句的原因导致前面的输出还 “滞留” 在屏幕上而已;第二个 2>con 由于是空输出(执行成功就没有错误输出)就把四个 > 彻底的抹掉了。

(注:2>con 是一个默认的句柄指向输出)

可能不太容易明白。
我正有个帖子关于重定向的,不过还没有编写完,写完通知你看。

TOP

请试验如下

  1. @echo off
  2. ping -n 2 127.1>nul 2>nul
  3. set/p=^><nul
  4. set/p=^><nul
  5. set/p=^><nul
  6. set/p=<nul
  7. echo a>nul 2>nul
  8. set/p=^><nul
  9. pause
复制代码
2>nul 换成 3>nul
  1. @echo off
  2. ping -n 2 127.1>nul 2>nul
  3. set/p=^><nul
  4. set/p=^><nul
  5. set/p=^><nul
  6. set/p=<nul
  7. echo a>nul 3>nul
  8. set/p=^><nul
  9. pause
复制代码
taskkill 命令的机制我无从分析。

======================================
新帖写好了:http://bbs.bathome.net/thread-2579-1-1.html

[ 本帖最后由 wxcute 于 2008-11-18 19:39 编辑 ]

TOP

返回列表