早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于批处理的for命令,为何完全没法用?假如文件a.txt中有如下内容:第1行第1列第1行第2列第1行第3列假如文件a.txt中有如下内容:第1行第1列第1行第2列第1行第3列第2行第1列第2行第2列第2

题目详情
关于批处理的for命令,为何完全没法用?假如文件a.txt中有如下内容:第1行第1列 第1行第2列 第1行第3列
假如文件a.txt中有如下内容:
第1行第1列 第1行第2列 第1行第3列
第2行第1列 第2行第2列 第2行第3列
第3行第1列 第3行第2列 第3行第3列
你想显示a.txt中的内容,会用什么命令呢?当然是type,type a.txt
for也可以完成同样的命令:
for /f %%i in (a.txt) do echo %%i
还是先从括号执行,因为含有参数/f,所以for会先打开a.txt,然后读出a.txt里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,所以会产生这样的集合,
{"第1行第1列 第1行第2列 第1行第3列",//第一个元素
"第2行第1列 第2行第2列 第2行第3列",//第二个元素
"第3行第1列 第3行第2列 第3行第3列"} //第三个元素
集合中只有3个元素,同样用%%i依次代替每个元素,然后执行do后面的命令.
我在c盘根目录下有 a.txt
然后做一个1.bat,内容是.
for /f %%i in (a.txt) do echo %%i
结果完全没有反应?可以确定不会输错任何东西.
winxp系统,在cmd下手工输入,也没有反应
是哪个txt文件的问题,已经解决了,估计是txt编码不正确,但是看不出来
▼优质解答
答案和解析
做一个1.bat,内容是.
@echo off
for /f %%i in (a.txt) do echo %%i
pause
winxp系统,在cmd下手工输入,要把双%%改成单%
for /f %i in (a.txt) do echo %i
注意,上面只显示每行的第一列,要显示整行内容 /f 后面要加上 "tokens=*"
for /f "tokens=*" %i in (a.txt) do echo %i