批处理怎样读取某文本的第N行
来源:网络收集 点击: 时间:2024-07-02准备演示环境
首先,我们准备一个文本文件,可以是任意内容,我们这里准备的是tmp.txt,它的内容如下图所示,我们准备的文本文件内容有编号,这个其实不是必须的,仅是为了便于观看。

编写空批处理文件
大家可以通过打开记事本,点击菜单“文件”——“保存”,然后将文件保存为.bat格式的方式来建立批处理文件。那样操作大家可能会遇到一些错误,所以,这里我们使用命令echo来创建,可以避免一些不必要的错误。如下图所示,创建后利用notepad打开批处理进行编辑 。

开始编写批处理代码
首先,要获取文本文件内容,大家就必须知道“for”命令的使用方法,for命令在批处理中,功能非常重大,它可以对一组文件进行编历,遂一读取文件内容的每一行。


如我们利用以一下代码(在命令行窗口中):for/f tokens=* %i in (tmp.txt) do echo %i
就可以逐一读取tmp.txt的文件内容,并显示出来。
需要注意的是:命令中的文本文件需包括正确的路径,以确保for命令能够正确找到它的位置,因为它们都在同一目录中,所以不需书写完整路径,如果不是在同一目录中,最好将文本文件的完整路径写出来。

知道for命令的用法后,好像要编写获取文件中指定行文件内容的代码并不困难,那么我们来试验一下。首先,将上面的代码写入批处理,需要注意的是在批处理中,变量的“%”要写成“%%”。

要获取指定行的代码,那么我们还需要设置一个变量row来得到当前行的行数,for命令没有提供现存的,那我们只能通过变量自加来实现,然后利用if语句来判断是否与指定的行数(这里以指定第3行为例)相等,相等输出该行内容,否则不输出。那么代码如下:

看上面的代码,好像没什么问题,但一运行,却发现没有得到预期的结果!这是怎么回事呢,我们再将if %row%==3 echo %%i修改成echo %row%,运行后,发现变量row都是0,没有自加。

这主要是由于批处理对变量的处理机制造成的(这里不详细介绍),需要在批处理中加入:setlocal enabledelayedexpansion,并将for语句中的%row%修改成!row!,使变量延时处理。保存运行,结果正常。

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_924680.html