Board logo

标题: [文本处理] for为何不能显示txt文本中的空行?? [打印本页]

作者: taojunyi    时间: 2009-2-4 18:09     标题: for为何不能显示txt文本中的空行??

本帖最后由 pcl_test 于 2017-4-10 07:44 编辑

下面二段为何不能显示a.txt中的空行??
@echo off
for /f  "tokens=*"  %%i  in  (a.txt) do  echo.%%i
pause


@echo off
for  /f  "delims="  %%i  in  (a.txt) do  echo.%%i
pause
作者: yslyxqysl    时间: 2009-2-4 18:17

For /?

filenameset 为一个或多个文件名。继续到 filenameset 中的
下一个文件之前,每份文件都已被打开、读取并经过处理。
处理包括读取文件,将其分成一行行的文字,然后将每行
解析成零或更多的符号。然后用已找到的符号字符串变量值
调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开
的第一个空白符号。跳过空白行。您可通过指定可选 "options"
参数替代默认解析操作。这个带引号的字符串包括一个或多个
指定不同解析选项的关键字。这些关键字为:

作者: taojunyi    时间: 2009-2-4 18:26

谢谢你的解释。但是您说的也不全对,如果"delim="的话,for /f也会取空行的,如果"tokens=* delim= "或者"tokens=*"则是跳过空行的。

[ 本帖最后由 taojunyi 于 2009-2-4 19:02 编辑 ]
作者: defanive    时间: 2009-2-4 19:13

for /f是按照分隔符delims分割每一行的数据,然后按tokens读出数据。。。

空行的话for就无法分割了。。。

所以只要将delims置空就可以了。。。
作者: taojunyi    时间: 2009-2-4 19:57

@echo off
for /f "tokens=*" %%i in (a.txt) do (
echo.%%i
)
如果a.txt文件中第一行有空格,那么第一行为何还能被取?因为默认的分隔符是空格,照理想想都跳过了,但tokens=*却表示整行取,二者好象有矛盾的,脑子笨有点塞住了
作者: lockmove    时间: 2009-2-4 20:54

呵呵.多试试.就知道了.感觉bat听乱的.
作者: yslyxqysl    时间: 2009-2-4 21:01

原帖由 lockmove 于 2009-2-4 20:54 发表
呵呵.多试试.就知道了.感觉bat听乱的.
不是bat乱,而是帮助的翻译......




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