返回列表 发帖

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

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

@echo off
set /p str=<a.txt
echo,%str%
pauseCOPY
1

评分人数

    • tester: 在需要第一行内容时,代码很管用技术 + 1

TOP

用powershell获取(某指定行号)行的内容,或者m行到n行的内容,或许可以说是最简单的。
(type a.txt)[0]
(type a.txt)[0..5]COPY
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 3# PowerShell


    只看代码确实是简单,只是我这菜鸟还不会powershell,等学习了之后再看了,目前还是希望通过bat来实现,不过依然很感谢。

TOP

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

回复 2# DAIC


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

TOP

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

评分人数

TOP

回复 5# tester


方法1
@echo off
for /f "delims=" %%i in (a.txt) do (
    if "%%i" equ "bbb" (
        set "str=%%i"
    )
)
echo,%str%
pauseCOPY
1

评分人数

TOP

回复 5# tester


方法2
@echo off
for /f "skip=1" %%i in (a.txt) do (
    set "str=%%i"
    goto :next
)
:next
echo,%str%
pauseCOPY
1

评分人数

TOP

列是指用空格分开的字段
@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
)
pauseCOPY
1

评分人数

TOP

回复 8# DAIC


    多谢DAIC回复,两种方法都可行, 再次感谢!

TOP

回复 9# foxJL


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

TOP

返回列表