3

我有一个 ChatRoom 批处理文件,它会创建一个文本文件,所有用户输入都像这样:Echo %User Input% >> C:\ChatterBox\Chat.txt

到目前为止我有这个:

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

那没有用,它只给了我文本文件的第一行,你知道我如何以这种方式回显每一行吗?

回声%聊天%

输出看起来像这样吗?

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

4 回答 4

2

您在循环结束后回显该行,因此您只会打印最后一行(而不是第一行)。为了在循环中使用这些行,您必须启用延迟变量扩展——否则变量会在循环开始时而不是每次迭代时扩展。启用它后,您可以使用!var!而不是%var%获得延迟扩展。

这是如何做到的:

setlocal enabledelayedexpansion
For /F "Delims=" %%A In (Chat.txt) Do (
Set Chat=%%A
Echo !Chat!
)
于 2013-11-12T03:48:45.850 回答
1

使用这个命令:

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

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

希望能帮助到你!

于 2013-11-12T06:23:52.430 回答
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

莫娜。

于 2013-11-12T03:54:54.020 回答
0

这将显示以下行:

type "C:\ChatterBox\Chat.txt"
于 2013-11-12T07:54:25.237 回答