【发布时间】:2015-08-24 22:20:31
【问题描述】:
带有/F 开关的for 命令用于解析文本字符串行(文字字符串、从文本文件中读取或从命令行输出中检索)并将每行解析为一个或多个标记。
我怎样才能得到一行文本,而不替换任何字符或忽略任何行?
我知道for /F "delims=" %L in (*) do echo."%L" 返回未编辑的每个已解析(非空)行。但是,由于eol 选项默认为;,因此以该字符开头的每一行都将被忽略。
如果我使用for /F "tokens=* eol=" %L in (*) do echo."%L",我禁用 [编辑:这个说法不正确,eol 选项"eol=" 不会禁用eol选项,但它将" 定义为eol 字符!],但delims 选项默认为空格和制表符,因此所有前导空格和/或制表符都会被删除。
(在批处理文件中使用%%L。* 代表此处任何有效的文本字符串源。)
换句话说,我的问题是:有没有办法指定 no delims and no eol 字符? p>
我尝试指定两个选项字符串 ("eol=" "delims="),但这样会导致语法错误。选项字符串"eol=delims="也是如此。
注意:这个问题在标记化时不会持续存在,也就是说,当设置了delims 选项时,因为它似乎应用了比eol 更高的优先级(奇怪但幸运的是),因此您可以通过将delims 字符也指定为eol 来“隐藏”delims 后面的eol。
【问题讨论】:
标签: batch-file for-loop cmd