我想是因为FINDSTR /X的原因吧,如果你去掉它就会得到想要的结果。
但是为什么加上/X,就会有这种效果呢?那么先看看这句话“ 打印完全匹配的行”
对这里是指“行”,什么能作为一行呢,我想就是两个换行符之间的内容吧。但是这时问题来了,在文件的开始和未尾并不一定有,我的认为是/X在文本的开始和结尾各加了个换行符。这个用法和FOR/F是一致的,可以先看下下面的例子- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('ipconfig^|findstr /i "Address"') do set var=%%a
- set CarriageReturn=!var:~-1!
- 效果:变量CarriageReturn被赋值为一个回车符(0x0d,\r,Cr)
- 注释:源于 ipconfig 的输出每行行尾都有两个回车符,在被for /f截掉一个后还能剩一个;
- 引用时需要用变量延迟的形式,否则就会在预处理中被当做行结束符而被过滤掉
复制代码 是不是想到些什么呢,我想就是我上面所说的吧。另外FOR/F读取文本时是以计算机语言读取的(这里我也不知道是16还是2进制,必竟还没有学到那里,但我估计是16)
如有兴趣不防试一下,将一个小写的"d "(后有空格.但不包括引号)保存在文件中(格式默认就行),再打开看一下是不是乱码,如果是再用FOR/F解释一下,是不是原来的内容出来了.
以上都是个人的理解,希望对你有帮助 |