[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

评分人数

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

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

评分人数

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

TOP

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

TOP

回复 3# PowerShell


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

TOP

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

回复 2# DAIC


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

TOP

经过再次搜索,发现了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
复制代码
1

评分人数

TOP

回复 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
复制代码
1

评分人数

TOP

回复 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
复制代码
1

评分人数

TOP

列是指用空格分开的字段
  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
复制代码
1

评分人数

TOP

回复 8# DAIC


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

TOP

回复 9# foxJL


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

TOP

返回列表