bat 获取文本某行 某段 为变量

如题比如文本内容如下1张三1002李四803王五85我想提取第二行第三段为变量... 如题
比如文本内容如下
1 张三 100
2 李四 80
3 王五 85
我想提取第二行第三段为变量
展开
 我来答
lijinpengying
2012-12-05 · TA获得超过915个赞
知道小有建树答主
回答量:585
采纳率:0%
帮助的人:483万
展开全部
@echo off&color 27&setlocal enabledelayedexpansion
set /p line=要获取的行所在行数:
(for /l %%a in (1 1 %line%) do set /p var=)<a.txt
echo. %var%
pause
以上代码请保存成*.cmd格式,而不是bat格式。只是为了减少错误而已哈!
这就是一个简单的按行提取变量的方法,在这里,我假设你的文本为a.txt,然后呢,我只是举个例子,所以我代码里只是让你获取的这行显示出来,具体你要用它做什么,你就套用你自己的代码吧!反正是把你想要的提取出来了!亲,赶快去试试我的方法行不行吧!嘻嘻!
追问
取得行数值已经被你攻克了,根据你的代码可以取得任何一行的值,那我要想取得任何一行的任何一节的值的? 比如第二行 第三节 就是80
追答
如果你的文本格式就是例子里的那样!这个就很简单了啊!利用for命令提取就好了。比如例子里你的格式是以空格隔开每一节的,那么提取第二行 第三节的80的代码就是:
@echo off&color 27&setlocal enabledelayedexpansion
set /p line=要获取的行所在行数:
(for /l %%a in (1 1 %line%) do set /p var=)b.txt
for /f "tokens=1-3 delims= " %%a in (b.txt) do (
echo %%c
)
pause

你每一行一共有几节?比如这里,你有3节,所以tokens=1-3,如果是5节,就是tokens=1-4 .因为是显示第三个,所心以变量%%a 递推,就应该是显示%%c!这个懂没?以些类推就可以达到你的要求了!本来想给你写一个一次性的方便你操作,但是现在时间不够,写了又没时间验证,所以还是让你自己举一反三的好,如果我没有猜错,你还处于刚入门的阶段吧,多写写,多想想,总是有好处的,这样你才能更加体会到每一句代码的含义。如果学习中遇到有问题,欢迎百度HI我,我们一起讨论学习。
哇噻美女
2012-12-05 · TA获得超过450个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:171万
展开全部
用for,跳过第一行,取第三段直接跳出:
@echo off
set str=nvl
FOR /F "usebackq skip=1 tokens=3 delims= " %%i in (`type file.txt`) do (set str=%%i) & goto end
:end echo %str%
pause
//file.txt内容是上面你贴的文本
更多追问追答
追问
我取哪一行是不固定的,可能 第二行 可能 第10行 
请问如何实现
追答
用子程序段吧,比如这样:
@echo off
call :getline rt file.txt 1
echo %rt%
call :getline rt file.txt 3
echo %rt%

goto :eof
:getline
set /a skp=%3-1
if %skp% equ 0 (
FOR /F "usebackq tokens=3 delims= " %%i in (`type file.txt`) do (set %1=%%i) & goto :eof
) else (
FOR /F "usebackq skip=%skp% tokens=3 delims= " %%i in (`type file.txt`) do (set %1=%%i) & goto :eof
)
goto :eof

pause
//getline是子程序段,call调用getline时第一个参数是返回值,第二个文件名,第三个是行数。请求加分啊,bat不是很熟练,花了十来分钟调
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式