windows 使用批处理逐行读取txt文件,包括以分号开头的行[重复]

ojsjcaue  于 2023-03-24  发布在  Windows
关注(0)|答案(1)|浏览(192)

此问题在此处已有答案

Batch files: How to read a file?(7个答案)
昨天关门了。
我是这样试的:

for /F %%i in (%textfile%) do ( 
echo %%i )

或者这个:

for /F "tokens=* delims=" %%i in (%textfile%) do ( 
echo %%i )

或任何其他组合,带或不带标记或分隔符。
所有这些组合只是回显每一行,但无论出于何种原因,排除了以分号开头的行。使用分号作为delim击败了purpous,因为我无法识别哪些行曾经以分号开头,哪些没有。
是否有任何方法可以正确阅读带有分号的行,或者在从分隔符中删除分号行后识别它们?

nzk0hqpo

nzk0hqpo1#

将默认的“End Of Line”字符;替换为其他字符:

for /f "tokens=* eol=^A" %i in (%textfile%) do @echo %i

(in批处理写入%%i,而不是%i
^A只是ASCII/ANSI代码1的内容。您可以通过按下修改器键alt并在 * 数字键盘 * 0001上键入来获得它。
这是一个很少出现在文本文件中的字符。但是你可以自由选择一个不同的字符。
重新编辑:正如 Compo 在评论中指出的那样,实际上对于解决方案来说,不需要EOL字符。所以没有字符会被阻止:

for /f tokens^=*^ eol^= %i in (%textfile%) do @echo %i

正如 jeb 正确提到的那样,这里不能使用强制性的引号。因此特殊的解释字符=和``(空格)必须由^转义。
Compo 的解决方案中,字段delims也被设置为'empty',因此在这种情况下不需要tokens选项。

相关问题