找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 87603|回复: 23

[文本处理] 批处理怎样从某一行开始提取数据?

[复制链接]
发表于 2024-5-6 10:21:40 | 显示全部楼层 |阅读模式
学校
班级简介
***班级成绩名次
文字描述

序号  姓名 成绩 名次
1      张三        80        10
2      李四        85        8
3        赵六        90        7
4         王刚        91        6


各位老师好,想请问下,就是从序号这一行往下所有的数据都提取到新的文本文件中,批处理该怎么写呢,除了skip跳过某行之外,还有什么方法,该怎么写呢?
发表于 2024-5-6 10:38:32 | 显示全部楼层
上传一个文件到网盘,让大家伙看看文本结构具体是什么样的,这样才好帮你。
发表于 2024-5-6 10:45:53 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-5-6 10:58 编辑

回复 1# yujw668

源文件 "班级名次.txt" 删除前6行的结果被存为 "班级名次.new.txt"

  1. @echo off &more +6 "班级名次.txt">"班级名次.new.txt" &pause&exit/b
复制代码
 楼主| 发表于 2024-5-6 11:02:02 | 显示全部楼层
回复 3# aloha20200628


        老师好,这样的话每次都需要数是不是,如果换个文本,序号前面的内容可能不一样了,就不是6行了,如果自动识别不需要每次更换文本数多少行该如何写呢
发表于 2024-5-6 11:03:44 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%i in (1.txt) do (
  3.     for /f %%j in ("%%i") do (
  4.         if "%%j"=="序号" set n=true
  5.     )
  6.     if defined n echo,%%i
  7. ))>new_1.txt
  8. pause
复制代码
发表于 2024-5-6 11:14:50 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-5-6 11:16 编辑

回复 4# yujw668

  1. @echo off &findstr /rbc:"[0-9]* " "班级名次.txt">"班级名次.new.txt" &pause&exit/b
复制代码
 楼主| 发表于 2024-5-6 11:37:47 | 显示全部楼层
回复 5# qixiaobin0715


    非常感谢老师的帮助,刚才测试了一下,完全没问题,以后还是要多学习
 楼主| 发表于 2024-5-6 11:38:05 | 显示全部楼层
qixiaobin0715 发表于 2024-5-6 11:03



    非常感谢老师的帮助,刚才测试了一下,完全没问题,以后还是要多学习
发表于 2024-5-6 12:20:02 | 显示全部楼层
回复 1# yujw668
  1. @echo off
  2. cd /d "%~dp0"
  3. set "MyFile=1.txt"
  4. for /f "delims=:" %%i in ('findstr /n /i /b "序号" "%MyFile%"') do (
  5.     more +%%i "%MyFile%"
  6. )
  7. pause
复制代码
 楼主| 发表于 2024-5-6 12:23:35 | 显示全部楼层
qixiaobin0715 发表于 2024-5-6 11:03



序号 姓名 成绩 名次
1 张三 80 10
2 李四 85 8
3 赵六 90 7
4 王刚 9 16
老师好,刚才仔细看了一下导出的数据,上面有序号 姓名 成绩名次 这一列,如果不需要这一列,这个是怎么弄,就是说从序号往下所有的数据都截取呢。
 楼主| 发表于 2024-5-6 12:24:30 | 显示全部楼层
回复  yujw668
Batcher 发表于 2024-5-6 12:20



    谢谢群主老师的帮助,非常完美解。赞赞赞👍👍👍
 楼主| 发表于 2024-5-6 12:29:13 | 显示全部楼层
回复  yujw668
aloha20200628 发表于 2024-5-6 11:14



   感谢老师, 非常简洁明了,赞赞赞👍👍👍
发表于 2024-5-6 13:09:24 | 显示全部楼层
回复 12# yujw668


    使用6楼代码请注意:需要跳过的行,开头不能有数字
发表于 2024-5-6 13:43:52 | 显示全部楼层
5楼代码第6行放到第3行下面试试。
发表于 2024-5-6 14:14:05 | 显示全部楼层

  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /n "序号" 1.txt ') do (
  3. more +%%i 1.txt >2.txt
  4. )
  5. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 01:22 , Processed in 0.012479 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表