要求:
取出文本行中指定的第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 是为了避免取空行时发生错误。
就介绍这些吧,学习批处理编程的不错的例子,希望对大家有所帮助。