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

[文本处理] 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

For /?

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

TOP

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

[ 本帖最后由 taojunyi 于 2009-2-4 19:02 编辑 ]

TOP

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

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

所以只要将delims置空就可以了。。。

TOP

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

TOP

呵呵.多试试.就知道了.感觉bat听乱的.

TOP

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

TOP

返回列表