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

发布时间:2019-12-14编辑:脚本学堂
本文介绍下,使用批处理脚本,实现取文本行中指定的第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 是为了避免取空行时发生错误。

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