批处理脚本取文本行中指定的第N行 实例代码
要求:
取出文本行中指定的第N行。
使用方法:
call :G_getrowstr 行号 文本 Nhang寄存变量
代码如下:
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行
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)脚本
文件夹取其名称前两位重命名的批处理脚本