中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助 根据下一行提取上一行的字符串
作者:
标题: 求助 根据下一行提取上一行的字符串 上一主题 | 下一主题
newswan
初级用户





积分 70
发帖 29
注册 2006-1-3
状态 离线
『楼 主』:  求助 根据下一行提取上一行的字符串

mountvol的输出格式如下:
------------------------------begin--------------------------------
当前装入点的 VolumeName 可能值为:
    \\?\Volume{61260a4f-694f-11df-9198-806e6f6e6963}\
        C:\

    \\?\Volume{61260a52-694f-11df-9198-806e6f6e6963}\
        *** 无装入点 ***
------------------------------end--------------------------------

怎样根据
"C”或"***"
获得该行上面一行的值
\\?\Volume{.............................................................}\

2010-6-20 23:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gool123456
初级用户




积分 89
发帖 76
注册 2009-12-13
状态 离线
『第 2 楼』:  


@echo off
for /f "delims=" %%i in (1.txt) do (
call :Mackt "%%i"
call :Mackt "" "%%i"
)
pause
exit
:Mackt
echo.%~1|findstr "\<C" 2>nul&& echo.%string%
echo.%~1|findstr "\<无装" 2>nul&& echo.%string%
set string=%~2
*是特殊字符



Discuz! 现在时间
2010-6-21 01:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gool123456
初级用户




积分 89
发帖 76
注册 2009-12-13
状态 离线
『第 3 楼』:  

再加个判断会快很多:
@echo off
for /f "delims=" %%i in (1.txt) do (
call :Mackt "%%i"
call :Mackt "" "%%i"
)
pause
exit
:Mackt
if not %1=="" (
echo.%~1|findstr "\<C" 2>nul&& echo.%string%
echo.%~1|findstr "\<无装" 2>nul&& echo.%string%
)
set string=%~2
[ Last edited by gool123456 on 2010-6-21 at 02:16 ]



Discuz! 现在时间
2010-6-21 02:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
newswan
初级用户





积分 70
发帖 29
注册 2006-1-3
状态 离线
『第 4 楼』:  

收到。谢谢。。

2010-6-21 03:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 5 楼』:  


@echo off&setlocal enabledelayedexpansion
for /f %%a in (1.txt) do (if defined a echo.!b!&set a=
echo.%%a|findstr /i "c: ***">nul&&set a==||set b=%%a)
pause




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-6-21 12:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『第 6 楼』:  

[quote]Originally posted by Hanyeguxing at 2010-6-21 12:31 PM:
@echo off&setlocal enabledelayedexpansion
for /f %%a in (1.txt) do (if defined a echo.!b!&set a=
echo.%%a|findstr /i "c: ***">nul&&set a==||set b=%%a)
pause[/c ... [/quote]

这段代码虽然很精简,但是最后一次匹配的行却打印不出来,需要做些改进。



[code]@echo off & setlocal enabledelayedexpansion
for /f %%a in (1.txt) do (
echo.%%a|findstr /i "c: ***">nul&&echo.!b!
set b=%%a
)
[ Last edited by genteman on 2010-6-21 at 14:49 ]

2010-6-21 14:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: