多余空格的问题已基本确认
应该是CMD预处理括号对()和管道符时插入的
请看以下示例
D:\>(echo.abc) > 1.txt
D:\>echo.abc|more>2.txt
D:\>(echo.abc)|more>3.txt
只有3.txt有空格
而1.txt,2.txt都没有
这说明CMD的预处理在做语句的词法切分时
为了方便以后的预处理识别)和|这些转义字符
而特意在这些字符前后插入一个空格
同时也会把多余的空格去除
这种增减空格的现象
在不含echo off的批处理中可以看到很多
比如以下的用法
- (echo test)
- (echo.test)
- echo test|more
- echo.test|more
- (echo test)> a.txt
- (echo.test) > a.txt
- echo.test|more>b.txt
- (echo.test)|more>c.txt
复制代码
D:\>(echo test )
test
D:\>(echo.test)
test
D:\>echo test | more
test
D:\>echo.test | more
test
D:\>(echo test ) 1>a.txt
D:\>(echo.test) 1>a.txt
D:\>echo.test | more1>b.txt
D:\>(echo.test) | more1>c.txt
[ 本帖最后由 qzwqzw 于 2010-4-21 10:39 编辑 ] |