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

[文件操作] 【已解决】求助批处理怎么读取文本指定行的内容?

[复制链接]
发表于 2024-8-19 19:23:53 | 显示全部楼层 |阅读模式
本帖最后由 蚯蚓传奇 于 2024-8-21 12:04 编辑

我有个程序可以自动查找在word.log文件的哪一行包含用户输入的内容并显示对应的答案,但是我在单独读取某行内容时遇到了问题
word.log文件一共有80行,前40行是用来与输入内容匹配的,后40行是用来输出结果的
这里是我的代码
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :loop
  4. set "find=200"
  5. set /p 询问=:
  6. rem 设置初始行数
  7. set "line=0"

  8. for /f "delims=" %%a in (word.log) do (
  9.     set /a line+=1
  10.     rem 逐行查找是否有与输入内容匹配的行
  11.     echo !询问! | find /i "%%a" >nul
  12.     if !errorlevel! equ 0 (
  13.         rem 将目标行设为匹配行+40
  14.         set /a find=!line!+40
  15.         echo 在第 !line! 行找到匹配项: %%a
  16.     )
  17.     rem 查找目标行
  18. [color=Red]    if !line! == %find% (
  19.         rem 显示目标行的内容作为答语
  20.         echo %%a
  21.         pause>nul
  22.         goto :eof
  23.     )[/color]

  24. )
  25. rem 如果未找到则退出
  26. echo 未找到指定的起始行或匹配项
  27. pause>nul
  28. goto loop
复制代码
红色部分就是读取指定行的代码,但是好像不能正确的找到这一行,还请高手帮我修改一下,谢谢
 楼主| 发表于 2024-8-19 19:24:49 | 显示全部楼层
其实就是想知道如何读取目标行上的内容
 楼主| 发表于 2024-8-19 19:30:00 | 显示全部楼层
在第 19 行找到匹配项: a
C:\Users\Gao\Desktop>(
set /a line+=1
if !line! == 200 (
echo hello
pause
goto :eof
)
问题好像出在这里,获取目标行还是默认的200,应该是匹配行+40这个数才对
但是我检查了一下代码好像也没毛病呀
哪位大神能帮我看看,谢谢
发表于 2024-8-19 21:09:47 | 显示全部楼层
回复 1# 蚯蚓传奇


第20行的%find%改成!find!
发表于 2024-8-20 00:36:01 | 显示全部楼层
  1. @echo off
  2. rem 全部保存为ansi
  3. cd /d "%~dp0"
  4. set /p str=input:
  5. for /f "tokens=1* delims=[]" %%a in ('find /n "%str%" ^< "1.txt"') do (
  6.         if %%a leq 40 (
  7.                 set /a m=%%a+40
  8.                 call set n=%%n%% %%m%%
  9.         )
  10. )
  11. for %%a in (%n%) do (
  12.         (for /l %%l in (1,1,%%a) do (
  13.                 rem 如果只有1个,可以删除下一行的%%a
  14.                 set /p #%%a=
  15.         )) < "1.txt"
  16. )
  17. set #
  18. pause
复制代码
发表于 2024-8-20 00:40:05 | 显示全部楼层
编辑后漏了说明...
如果行数较小,可以用楼上代码的第12-15行读取指定行内容并赋值
 楼主| 发表于 2024-8-20 08:41:38 | 显示全部楼层
回复 4# ShowCode


    好的好的,是我之前不小心写错了。现在可以运行了,感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 21:07 , Processed in 0.018424 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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