Board logo

标题: [文本处理] 【已解决】批处理如何获取txt文本中某行某列的内容/指定行指定列的内容 [打印本页]

作者: tester    时间: 2013-11-6 16:49     标题: 【已解决】批处理如何获取txt文本中某行某列的内容/指定行指定列的内容

本帖最后由 pcl_test 于 2018-4-13 11:34 编辑

每次碰到问题之后,就是用搜索功能,发现了很多教程以及编写代码技巧,但是一直以来没有找到这个问题的答案:
就是如何获取文本中具体的某行某列。
例如:
文本内容为:
aaa
bbb
ccc
只想要获取aaa,怎么办?
静待高手指点,谢谢!
作者: DAIC    时间: 2013-11-6 17:00

  1. @echo off
  2. set /p str=<a.txt
  3. echo,%str%
  4. pause
复制代码

作者: PowerShell    时间: 2013-11-6 18:11

用powershell获取(某指定行号)行的内容,或者m行到n行的内容,或许可以说是最简单的。
  1. (type a.txt)[0]
  2. (type a.txt)[0..5]
复制代码

作者: tester    时间: 2013-11-7 09:59

回复 3# PowerShell


    只看代码确实是简单,只是我这菜鸟还不会powershell,等学习了之后再看了,目前还是希望通过bat来实现,不过依然很感谢。
作者: tester    时间: 2013-11-7 10:01

本帖最后由 tester 于 2013-11-7 10:16 编辑

回复 2# DAIC


    经过测试,确实发现是获取到了aaa字符,非常感谢。
   昨天发帖子的时候本来还想是不是要说通过for语句来实现呢,因为看到很多的文本处理都是通过for语句来实现的,但for语句仅限于实现列的选取,无法具体到某行某列,比如:只获取上述文件中的bbb,不知道理解是否正确?
   另外,是否有方法以此获取到每一行的内容,因为上述代码只是实现了获取到第一行的aaa。因为刚开始学习bat,很多还不太熟悉,再次感谢
作者: tester    时间: 2013-11-7 10:32

经过再次搜索,发现了set+重定向的方法来获取具体行的内容,例如:
  1. @echo off
  2.   set line=2
  3. (for /l %%a in (1 1 %line%) do set /p doc=)<test.txt
  4. set doc
  5. echo %doc%
  6. pause
复制代码

作者: DAIC    时间: 2013-11-7 10:51

回复 5# tester


方法1
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.     if "%%i" equ "bbb" (
  4.         set "str=%%i"
  5.     )
  6. )
  7. echo,%str%
  8. pause
复制代码

作者: DAIC    时间: 2013-11-7 10:52

回复 5# tester


方法2
  1. @echo off
  2. for /f "skip=1" %%i in (a.txt) do (
  3.     set "str=%%i"
  4.     goto :next
  5. )
  6. :next
  7. echo,%str%
  8. pause
复制代码

作者: foxJL    时间: 2013-11-7 11:05

列是指用空格分开的字段
  1. @echo off & setlocal enabledelayedexpansion
  2. set/p x=第几行:
  3. set/p y=第几列:
  4. for /f "tokens=%y%delims= " %%i in (aa.txt) do (
  5.     set/a n+=1
  6.     if !n! equ !x! echo,%%i
  7. )
  8. pause
复制代码

作者: tester    时间: 2013-11-7 13:44

回复 8# DAIC


    多谢DAIC回复,两种方法都可行, 再次感谢!
作者: tester    时间: 2013-11-7 13:49

回复 9# foxJL


    难道24小时之内只能评分一次?无法给加分了,你给出的思路很好,学习了,多谢多谢。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2