标题: [文本处理] 【已解决】批处理如何获取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
- @echo off
- set /p str=<a.txt
- echo,%str%
- pause
复制代码
作者: PowerShell 时间: 2013-11-6 18:11
用powershell获取(某指定行号)行的内容,或者m行到n行的内容,或许可以说是最简单的。- (type a.txt)[0]
- (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+重定向的方法来获取具体行的内容,例如:- @echo off
- set line=2
- (for /l %%a in (1 1 %line%) do set /p doc=)<test.txt
- set doc
- echo %doc%
- pause
复制代码
作者: DAIC 时间: 2013-11-7 10:51
回复 5# tester
方法1- @echo off
- for /f "delims=" %%i in (a.txt) do (
- if "%%i" equ "bbb" (
- set "str=%%i"
- )
- )
- echo,%str%
- pause
复制代码
作者: DAIC 时间: 2013-11-7 10:52
回复 5# tester
方法2- @echo off
- for /f "skip=1" %%i in (a.txt) do (
- set "str=%%i"
- goto :next
- )
-
- :next
- echo,%str%
- pause
复制代码
作者: foxJL 时间: 2013-11-7 11:05
列是指用空格分开的字段- @echo off & setlocal enabledelayedexpansion
- set/p x=第几行:
- set/p y=第几列:
- for /f "tokens=%y%delims= " %%i in (aa.txt) do (
- set/a n+=1
- if !n! equ !x! echo,%%i
- )
- 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 |