教程集 www.jiaochengji.com
教程集 >  脚本编程  >  批处理/bat  >  正文 批处理脚本取文本行中指定的第N行 实例代码

批处理脚本取文本行中指定的第N行 实例代码

发布时间:2014-09-16   编辑:jiaochengji.com
本文介绍下,使用批处理脚本,实现取文本行中指定的第N行的方法。有需要的朋友,参考下吧。

要求:
取出文本行中指定的第N行。

使用方法:
call :G_getrowstr 行号 文本 Nhang寄存变量

代码如下:
 

复制代码 代码示例:
:G_getrowstr
set %3=
set /A G_skiprows=%1-1
if "%G_skiprows%"=="0" goto :G_getrowstrz
for /f "skip=%skiprows% delims=" %%i in ('findstr /n .* %2') do ( 
for /f "tokens=2* delims=:" %%j in ("%%i") do set %3=%%j
::if "%%i"=="%1:" set %3=空白行
goto :eof
)
:G_getrowstrz
for /f "delims=" %%i in ('findstr /n .* %2') do (
for /f "tokens=2* delims=:" %%j in ("%%i") do set %3=%%j
goto :eof
)

例如,有文本test.txt
1232123
1112213
    
 1323 23
223232 22
使用:G_getrowstr 取文本行中指定的第1行
 

复制代码 代码示例:
@echo off
setlocal Enabledelayedexpansion
call :G_getrowstr 1 test.txt kk
echo "%kk%"
pause
exit
 
:G_getrowstr
set %3=
set /A G_skiprows=%1-1
if "%G_skiprows%"=="0" goto :G_getrowstrz
for /f "skip=%G_skiprows% delims=" %%i in ('findstr /n .* %2') do ( 
for /f "tokens=2* delims=:" %%j in ("%%i") do set %3=%%j
::if "%%i"=="%1:" set %3=空白行
goto :eof
)
:G_getrowstrz
for /f "delims=" %%i in ('findstr /n .* %2') do (
for /f "tokens=2* delims=:" %%j in ("%%i") do set %3=%%j
goto :eof
)
 

输出:
1232123

说明:
1,如果该函数 某行输出为 ECHO 处于打开状态。 那么请在输出的时候使用"")
注意:使用该函数前应该先判断所取的行有没有超出,文本最多行数。
另外,findstr 是为了避免取空行时发生错误。

就介绍这些吧,学习批处理编程的不错的例子,希望对大家有所帮助。

您可能感兴趣的文章:
批处理脚本取文本行中指定的第N行 实例代码
批处理实例 提取文本文件第一行与最后一行
什么是批处理
dos变量定义和引用方法
shell结合expect写的批量scp脚本工具
批处理去除字符串行首空格及for /f的用法详解
批处理:从ftp定时下载按日期生成的文件
批处理for语句 文本解析显神威
批量安装windows补丁的批处理(bat)脚本
文件夹取其名称前两位重命名的批处理脚本

[关闭]
~ ~