我正在尝试使用批处理从文本文件中读取每一行。
文件内的行有一些空格,所以这是一个输入示例:
This is the first line
This is the second line
...
我正在使用以下源代码
FOR /f %%a in ("%1") do (
@echo %%a
)
goto:eof
输出如下:
This
This
...
我已阅读 Stack Overflow 中的以下条目,但不能解决我的问题。 批处理:从路径中有空格的文件中读取行
我正在尝试使用批处理从文本文件中读取每一行。
文件内的行有一些空格,所以这是一个输入示例:
This is the first line
This is the second line
...
我正在使用以下源代码
FOR /f %%a in ("%1") do (
@echo %%a
)
goto:eof
输出如下:
This
This
...
我已阅读 Stack Overflow 中的以下条目,但不能解决我的问题。 批处理:从路径中有空格的文件中读取行
尝试这个。
FOR /f "tokens=* delims=," %%a in ('type "%1"') do (
@echo %%a
)
Bali C 和 Henry Gao 回避这个问题。
您的代码在第一个空格处终止值,因为 FOR /F 旨在将字符串解析为分隔标记。默认分隔符是空格和制表符。您可以通过将 DELIMS 设置为空来保留整行。
for /f "usebackq delims=" %%a in ("%~1") do echo %%a
但仍然存在潜在问题: FOR /F 循环跳过空行,也跳过以 EOL 字符开头的行(;默认情况下)。
FOR 命令(尤其是 FOR /F 变体)是一个复杂的野兽。我建议阅读http://judago.webs.com/batchforloops.htm以获得对 FOR 命令的角落和缝隙的一个很好的总结。
您需要为批次在每行上读取的位置设置分隔符
FOR /f "delims=;" %%a in ("%1") do (
@echo %%a
)
行尾的默认分隔符是分号。或者,使用您在文件中不太可能看到的字符,例如~or¬或其他东西。