如何使用for / f将变量设置为等于文本文件中的每一行?

时间:2013-11-12 03:37:06

标签: string batch-file for-loop

我有一个ChatRoom批处理文件,它创建了一个文本文件,所有用户输入都是这样的:     回声%用户输入%>> C:\话匣子\ Chat.txt

到目前为止,我有这个:

For /F "Delims=" %%A In (C:\ChatterBox\Chat.txt) Do (
Set Chat=%%A
)
Echo %Chat%

那不起作用,它只给了我文本文件的第一行,你知道我怎么能以这种方式回应每一行吗?

Echo%Chat%

输出看起来像这样吗?

"Line one"
"Line two"
"Line three"
"Line four"

4 个答案:

答案 0 :(得分:2)

你在循环结束后回显该行,所以你只打印 last 行(不是第一行)。为了使用循环中的行,必须启用延迟变量扩展 - 否则在循环启动时变量会扩展,而不是每次迭代。启用后,您可以使用!var!代替%var%来获得延迟扩展。

以下是如何操作:

setlocal enabledelayedexpansion
For /F "Delims=" %%A In (Chat.txt) Do (
Set Chat=%%A
Echo !Chat!
)

答案 1 :(得分:1)

您还可以将所有行放在可以在循环外使用的单个变量中:

set Chat=
set NL=^

::The above two blank lines are needed
setlocal enabledelayedexpansion
for /f "delims=" %%a in (chat.txt) do (
    set Chat=!Chat!!NL!%%a
    )
Echo %Chat%

这应该对你很好。重要的是要注意,只需使用:type chat.txt,而不是经历所有麻烦来打印每一行。

莫纳。

答案 2 :(得分:1)

使用此命令:

for /f "delims=" %%i in (chat.txt) do echo %%i

这将显示chat.txt文件中的所有行

希望它有所帮助!

答案 3 :(得分:0)

这将显示以下行:

type "C:\ChatterBox\Chat.txt"