[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
直接输出在con设备上,会有一个控制字符,所以要减3,而在文件中,只有cf跟lf,减2就可以了

TOP

原帖由 Batcher 于 2009-4-20 19:29 发表
当我们把字符串重定向输出到文件中再计算偏移量的情况,比较好理解,多出来的两个字节就是行尾的回车和换行。

当我们直接在for命令中获取字符串偏移量时,情况会变得稍微复杂。请把一下代码保存为test.bat,然后运 ...


cmd下输入echo a            >1.txt
打开1.txt,ctrl+A
cmd下输入echo a>2.txt
打开2.txt,ctrl+A

同理
(echo bathome&echo.)>1.txt



(echo.&echo.&echo.)|findstr /o .*
这个多出来的字符不是空格,是一个控制符,推测是行输出的eof标志

TOP

原帖由 Batcher 于 2009-4-30 22:46 发表
行结束符应该是eol而不是eof吧?
不过这个推测似乎缺乏证据的支持。


确定不知道具体是啥,嘿嘿
我刚发现这个时也有过讨论,记得有人分析过

(echo.abc&echo.) >1.txt
不带空格
(echo.abc&echo.)|more >2.txt
带上了空格

(dir /b ?.txt&echo.&echo.)|findstr /o .*
显示的结果为
0:1.txt
7:2.txt //+2
14: //+2
17: //这里是多3
最后假设多出来的一个字符是echo的特殊控制符,在con设备上被忽略,但通过管道符就成了可见,在debug下查看就显示为20

TOP

返回列表