批命令如何读取文件前5行?

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:51:47
现在有一个文本文件test.txt,内容如下:
===========test.txt==============
每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或
空格定界符号。请注意,这个 for 程序体的语句引用 %i 来

取得第二个符号,引用 %j 来取得第三个符号,引用 %k
来取得第三个符号后的所有剩余符号。对于带有空格的文件
名,您需要用双引号将文件名括起来。为了用这种方式来使
用双引号,您还需要使用 usebackq 选项,否则,双引号会
被理解成是用作定义某个要分析的字符串的。
===========test.txt==============

我现在写了个批处理文件head.bat,内容如下
======================head.bat============================
@echo off

set count=0

for /f "delims=" %%i in (test.txt) do (
echo %%i
set /a count=count+1
if %count%==5 goto end
)

:end
======================head.bat============================

为什么不会达到预期效果?预期效果是显示test.txt的前5行

如果用在if()或&&()或do()等等这些括号里面的变量都属于延迟变量,如果再次在括号里面调用,是没有值的,所以显示不了,只有在()括号外部调用才会正常显示.
开启延迟变量方法:setlocal enabledelayedexpansion
另外调用变量的时候要用!count!而不是%count%

修改以后的代码:
@echo off
setlocal enabledelayedexpansion
set count=0
for /f "delims=" %%i in (test.txt) do (
echo %%i
set /a count+=1
if !count!==5 goto end
)

:end