使用批处理从文件中读取带有空格的行

Dan*_*lba 6 windows cmd batch-file

我正在尝试使用批处理从文本文件中读取每一行.

文件中的行有一些空格,所以这是输入的一个例子:

This is the first line
This is the second line
...
Run Code Online (Sandbox Code Playgroud)

我正在使用以下源代码

FOR /f %%a in ("%1") do (
    @echo %%a
)
goto:eof
Run Code Online (Sandbox Code Playgroud)

输出如下:

This
This
...
Run Code Online (Sandbox Code Playgroud)

我已经在Stack Overflow中阅读了以下条目,但是没有解决我的问题. 批处理:从文件路径中包含空格的文件中读取行

Hen*_*Gao 9

试试这个.

FOR /f "tokens=* delims=,"  %%a in ('type "%1"') do (
    @echo %%a
)
Run Code Online (Sandbox Code Playgroud)

  • 现在代码将在`,`的第一次出现时切断每一行. (2认同)

dbe*_*ham 6

巴厘C和高亨利围绕裙子的问题。

您的代码在第一个空格处终止该值,因为 FOR /F 旨在将字符串解析为分隔标记。默认分隔符是空格和制表符。您可以通过将 DELIMS 设置为空来保留整行。

for /f "usebackq delims=" %%a in ("%~1") do echo %%a
Run Code Online (Sandbox Code Playgroud)

但仍然存在潜在问题:FOR /F 循环跳过空行,也跳过以 EOL 字符开头的行(;默认情况下)。

FOR 命令(尤其是 FOR /F 变体)是一个复杂的野兽。我建议阅读http://judago.webs.com/batchforloops.htm以获得对 FOR 命令的角落和缝隙的一个很好的总结。