中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-07 12:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助 根据下一行提取上一行的字符串 查看 751 回复 5
楼 主 求助 根据下一行提取上一行的字符串 发表于 2010-06-20 23:56 ·  中国 四川 绵阳 电信
初级用户
积分 70
发帖 29
注册 2006-01-03 06:17
20年会员
UID 48342
性别 男
状态 离线
mountvol的输出格式如下:
------------------------------begin--------------------------------
当前装入点的 VolumeName 可能值为:
\\?\Volume{61260a4f-694f-11df-9198-806e6f6e6963}\
C:\

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

怎样根据
"C”或"***"
获得该行上面一行的值
\\?\Volume{.............................................................}\
2 发表于 2010-06-21 01:52 ·  中国 广东 广州 电信
初级用户
★★
积分 89
发帖 76
注册 2009-12-13 13:41
16年会员
UID 156499
性别 男
状态 离线
@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


*是特殊字符
3 发表于 2010-06-21 02:11 ·  中国 广东 广州 电信
初级用户
★★
积分 89
发帖 76
注册 2009-12-13 13:41
16年会员
UID 156499
性别 男
状态 离线
再加个判断会快很多:
@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 ]
4 发表于 2010-06-21 03:03 ·  中国 四川 绵阳 电信
初级用户
积分 70
发帖 29
注册 2006-01-03 06:17
20年会员
UID 48342
性别 男
状态 离线
收到。谢谢。。
5 发表于 2010-06-21 12:31 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
@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
6 发表于 2010-06-21 14:46 ·  中国 江苏 扬州 电信
初级用户
积分 90
发帖 43
注册 2007-10-31 11:00
18年会员
UID 101268
性别 男
状态 离线
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

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



@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 ]
论坛跳转: