我有一个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"
答案 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"