![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 13:04 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已解决]如何读取文本内<a>至<a/> 之间的字符串? |
| 可打印版本 2,011 / 9 |
| 第1楼 huzixuan | 发表于 2007-03-30 02:41 |
| 高级用户 发帖 219 积分 537 来自 芜湖 | |
|
[已解决]如何读取文本内<a>至<a/> 之间的字符串? VBS以及批处理
如何读取文本内<a>至<a/> 之间的字符串? 两种皆可.谢谢 附件在下面 a.txt 感谢 flyinspace 兄提供的代码,遗憾就是不能准确读取 <a>至<a/> 之间的字符串. namejm 斑竹也给出了代码,感谢 斑竹 感谢 flyinspace . @echo off :: 要求test.txt中的字符串不能出现空格,没有感叹号、引号 setlocal enabledelayedexpansion for /f "delims=" %%i in (test.txt) do ( set "str=%%i" set "str=!str:<a>=☆!" if not "!str!"=="%%i" call :pickup ) pause exit :pickup for /f "tokens=1* delims=☆" %%i in ("%str%") do ( set "var=%%i" set "str=%%j" set "var=!var:</a>=★!" if "!var!"=="%%i" ( goto pickup ) else ( set "var=!var:★=!" for /f %%x in ("!var!") do set/p= "%%x"<nul ) if defined str goto pickup echo. ) goto :eof [ Last edited by huzixuan on 2007-3-31 at 10:02 PM ] |
|
| 第2楼 vkill | 发表于 2007-03-30 04:51 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
搜索
|
|
| 第3楼 huzixuan | 发表于 2007-03-30 08:12 |
| 高级用户 发帖 219 积分 537 来自 芜湖 | |
|
搜索了一下,有很多.但却没发现我这样的情况
文本内容如下: sa<a>1<a/>sadsa<a>1<a/>sadsa<a>1<a/>sadsa<a>1<a/>sad da<a>2<a/>sad 位置不固定,我想用 tokens 提取部分都不知道 如何下手 |
|
| 第4楼 flyinspace | 发表于 2007-03-30 15:02 |
| 银牌会员 发帖 517 积分 1,206 | |
|
两天之内如果我看到了你的回复。
就给你代码。 呵呵。花了我30分钟才搞定郁闷死了。 |
|
| 第5楼 slore | 发表于 2007-03-31 04:33 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
<a/>换成<a>然后split就完了
|
|
| 第6楼 jmz573515 | 发表于 2007-03-31 05:35 |
| 银牌会员 发帖 464 积分 1,212 | |
|
slore
好办法! |
|
| 第7楼 huzixuan | 发表于 2007-03-31 06:36 |
| 高级用户 发帖 219 积分 537 来自 芜湖 | |
|
饿,你好 flyinspace 兄,我回复了.
你在吗? 谢谢帖上代码,感谢 [ Last edited by huzixuan on 2007-3-31 at 07:50 AM ] |
|
| 第8楼 flyinspace | 发表于 2007-03-31 08:42 |
| 银牌会员 发帖 517 积分 1,206 | |
|
@echo off & SETLOCAL EnableDelayedExpansion
set _TxtFile=1.txt set _OutFile=2.txt set _GetLine=init set _GetChar=init :main for /f "Tokens=* " %%i in (%_TxtFile%) do ( set _GetLine=%%i call :READINFILE echo ^<!_OutLine!^> ) goto :END :READINFILE set ReadFlag=true for /l %%i in (0,1,255) do ( set _GetChar=!_GetLine:~%%i,1! if "!_GetChar!"=="" goto :EOF if "!_GetChar!"=="<" set ReadFlag=false if "!ReadFlag!"=="true" set _OutLine=!_OutLine!!_GetChar! if "!_GetChar!"==">" set ReadFlag=true ) goto :EOF :END pause |
|
| 第9楼 flyinspace | 发表于 2007-04-01 07:39 |
| 银牌会员 发帖 517 积分 1,206 | |
|
代码不是不可以给出里面的读数。。
只是因为你的要求简单。。 要不。代码会更复杂的。 |
|
| 第10楼 tclgb | 发表于 2007-07-08 02:39 |
| 初级用户 发帖 26 积分 76 | |
|
综合各位兄弟的思想,我对代码进行了一些改变,不受!&"等字符的限制
[ Last edited by tclgb on 2007-7-13 at 01:11 AM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |