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