[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
特定的行是指什么?
是指定第几行?还是指定某内容的行?还是指定含有某内容的行?
技术问题请到论坛发帖求助!

TOP

提取文本指定的行
以下代码都未考虑文本中有空行的情况。其中n为指定的行。
代码一、
  不产生临时文件,利用for的skip跳过指定行的前面的行,
  当指定行为第一行时则自动省略skip参数。
  1. @echo off
  2. set /a n=10
  3. set /a n-=1
  4. call :loop %n%
  5. pause
  6. :loop
  7. if %n% lss 1 (set skip=) else (set skip=skip=%n%)
  8. for /f "%skip% delims=" %%a in (a.txt) do echo %%a&goto :EOF
  9. goto :EOF
复制代码
代码二、
  利用more跳过指定行的前面行,当指定行为第一行时则自动用type来取代more
  1. @echo off
  2. set /a n=10
  3. set /a n-=1
  4. call :loop %n%
  5. pause
  6. :loop
  7. if %n% lss 1 (set skip=type) else (set skip=more +%n%)
  8. for /f "delims=" %%a in ('%skip% a.txt') do echo %%a&goto :EOF
  9. goto :EOF
复制代码
代码三、
  利用findstr首先将每行加上行号,在用findstr提取以指定行加冒号开头的行。
  1. @echo off
  2. set /a n=10
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt^|findstr /b %n%:')do echo %%b
  4. pause
复制代码
代码四、
  用goto跳出for
:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a n=10
  3. for /f "delims=" %%a in (a.txt) do (
  4.    set /a max+=1
  5.    if !max! equ %n% set var=%%a&goto loop
  6. )
  7. :loop
  8. echo %var%
  9. pause
复制代码
代码五、
  产生临时文件,适合大文本,原理同上。
  1. @echo off
  2. set /a n=10
  3. findstr /n .* a.txt|findstr /b %n%:>tem
  4. set /p var=<tem
  5. echo %var:*:=%
  6. pause
复制代码
1

评分人数

    • Lumiere: 感谢指导,原来所有人都可以给别人评分,这 ...PB + 5
技术问题请到论坛发帖求助!

TOP

返回列表