Board logo

标题: [文本处理] 请教批处理2^>nul^是什么含义? [打印本页]

作者: 宫商角徵羽    时间: 2014-9-24 17:13     标题: 请教批处理2^>nul^是什么含义?

请教各路朋友:


常用到代码如下
  1. for /f "tokens=6 delims==m" %%i in ('ping /n 2 %%a 2^>nul^|findstr /i "Average 平均"')
复制代码
其中的nul是否就是所谓的重定向?那么它两边的^各代表什么意思呢?
与常用的2>nul 有什么区别?



通过搜索对后面一个^有了一个清楚的认识,
你知道的,|的作用是连接两条命令,把第一条命令的结果作为第二条命令的参数,先加深一下印象:
echo abcdef|findstr "a"
在echo abcdef命令的输出结果中查找字符a。

我这样解释给你好了,拿Null的例子来说。
for /f "tokens=2 delims=:" %%i in ('ipconfig /all|findstr /c:"IP Address"') do @echo %%i

for的集合中没有用^对|转义,而出错,为何出错呢?

这是因为被系统误认为|之前的第一条命令是所有的红色部分,而不是集合中的ipconfig/all ,第二条命令是所有的蓝色部分,而不是findstr /c:"IP Address"'
for /f "tokens=2 delims=:" %%i in ('ipconfig /all
你能告诉我这条命令是什么意思吗?
你肯定会说这不是一条完整的命令,既然不是完整的命令了,当然出错。所以必须加^对|转义,它连接的只是ipconfig/all和findstr /c:"IP Address"
其他的& && || > >>同样道理。


那么对于2^>nul又如何理解呢?
作者: Batcher    时间: 2014-9-24 17:43

因为 > 是特殊字符,所以放在 for 命令里面需要使用转义符号
与常用的 2>nul 没有什么区别




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