标题: [文件操作] 【已解决】求助批处理怎么读取文本指定行的内容? [打印本页]
作者: 蚯蚓传奇 时间: 2024-8-19 19:23 标题: 【已解决】求助批处理怎么读取文本指定行的内容?
本帖最后由 蚯蚓传奇 于 2024-8-21 12:04 编辑
我有个程序可以自动查找在word.log文件的哪一行包含用户输入的内容并显示对应的答案,但是我在单独读取某行内容时遇到了问题
word.log文件一共有80行,前40行是用来与输入内容匹配的,后40行是用来输出结果的
这里是我的代码- @echo off
- setlocal enabledelayedexpansion
-
- :loop
- set "find=200"
- set /p 询问=:
- rem 设置初始行数
- set "line=0"
-
- for /f "delims=" %%a in (word.log) do (
- set /a line+=1
- rem 逐行查找是否有与输入内容匹配的行
- echo !询问! | find /i "%%a" >nul
- if !errorlevel! equ 0 (
- rem 将目标行设为匹配行+40
- set /a find=!line!+40
- echo 在第 !line! 行找到匹配项: %%a
- )
- rem 查找目标行
- [color=Red] if !line! == %find% (
- rem 显示目标行的内容作为答语
- echo %%a
- pause>nul
- goto :eof
- )[/color]
-
- )
- rem 如果未找到则退出
- echo 未找到指定的起始行或匹配项
- pause>nul
- goto loop
复制代码
红色部分就是读取指定行的代码,但是好像不能正确的找到这一行,还请高手帮我修改一下,谢谢
作者: 蚯蚓传奇 时间: 2024-8-19 19:24
其实就是想知道如何读取目标行上的内容
作者: 蚯蚓传奇 时间: 2024-8-19 19:30
在第 19 行找到匹配项: a
C:\Users\Gao\Desktop>(
set /a line+=1
if !line! == 200 (
echo hello
pause
goto :eof
)
问题好像出在这里,获取目标行还是默认的200,应该是匹配行+40这个数才对
但是我检查了一下代码好像也没毛病呀
哪位大神能帮我看看,谢谢
作者: ShowCode 时间: 2024-8-19 21:09
回复 1# 蚯蚓传奇
第20行的%find%改成!find!
作者: 77七 时间: 2024-8-20 00:36
- @echo off
- rem 全部保存为ansi
- cd /d "%~dp0"
- set /p str=input:
- for /f "tokens=1* delims=[]" %%a in ('find /n "%str%" ^< "1.txt"') do (
- if %%a leq 40 (
- set /a m=%%a+40
- call set n=%%n%% %%m%%
- )
- )
- for %%a in (%n%) do (
- (for /l %%l in (1,1,%%a) do (
- rem 如果只有1个,可以删除下一行的%%a
- set /p #%%a=
- )) < "1.txt"
- )
- set #
- pause
复制代码
作者: 77七 时间: 2024-8-20 00:40
编辑后漏了说明...
如果行数较小,可以用楼上代码的第12-15行读取指定行内容并赋值
作者: 蚯蚓传奇 时间: 2024-8-20 08:41
回复 4# ShowCode
好的好的,是我之前不小心写错了。现在可以运行了,感谢分享
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |