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

cmd进行预处理的时候,会将重定向挪到语句末尾,并在其后加上空格,若使用默认句柄1或0而未标明,则也会自动补足。而连接符&、&&、|、||在预处理的时候也会在前后各加一个空格(如果原先不存在),这样echo.>>%file%|echo %dat%>>%file%实际上是
“echo. 1>>1.txt  | echo asdfawefasfasdfasdf 1>>1.txt ”
这时候因为第一句echo不存在除重定向与空格之外的字符,所以大概是被划分成“echo. 1>>1.txt  ”而就输出了空格吧
解决方法,为echo加上括号,或者干脆不要用连接符
顺便一提,楼主如果用&我还可以理解,为什么重定向之后还要用通道呢?重定向是在通道之后被预处理的,也就是说,重定向比通道优先级高,使用了重定向,通道是没有作用的
1

评分人数

TOP

对问题2的猜测,原文本最后一行没有换行符

TOP

其实这里说成优先级不太合适,这和预处理顺序上的优先级是相反的,越迟出现的,就越权威

TOP

返回列表