![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 04:19 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]批处理筛选保留文本指定内容 |
| 可打印版本 2,418 / 18 |
| 第1楼 w1314ich | 发表于 2008-04-01 21:19 |
| 中级用户 发帖 119 积分 234 | |
|
[已结]批处理筛选保留文本指定内容 有一个网页首页文件,改成TXT打开后,里面有很多内容,如下:
=============================================== =============================================== 我想把里面以asp为后缀名的文件名保留下来(保留下来的文件名包括后缀名)其他所有的东西都不要,最后生成的结果如下: =============================================== gywmen.asp|index.asp|xhjs1.asp|hyzj1.asp|xhxx1.asp|hydt1.asp|jlhz1.asp|pxtd1.asp|zcfg1.asp|wscy.asp|wlzwhjj.asp|wsdj.asp|qikan.asp|zddh.asp|lxwm.asp|xhxx1.asp|news.asp|wscy.asp|wscy_news.asp|yqlj.asp|hylink.asp =============================================== 请问能不能用批处理实现 [ Last edited by HAT on 2009-1-2 at 01:41 ] |
|
| 第2楼 w1314ich | 发表于 2008-04-01 21:42 |
| 中级用户 发帖 119 积分 234 | |
|
自己顶一下~~~
|
|
| 第3楼 w1314ich | 发表于 2008-04-01 22:24 |
| 中级用户 发帖 119 积分 234 | |
|
有人能帮帮忙吗 非常感谢
|
|
| 第4楼 terse | 发表于 2008-04-01 22:44 |
| 银牌会员 发帖 946 积分 2,404 | |
|
用批处理 可怕很难 因为特殊字符
@echo off for /f "tokens=* delims=:" %%a in ('findstr /n "\.asp" a.txt') do ( set var=%%a setlocal enabledelayedexpansion set var=!var:*:=! set var=!var:*"=! set var=!var:"= ! if not "!var!"=="" for /f "delims= " %%i in ("!var!") do if "%%~xi"==".asp" (>>bak.txt echo %%i) endlocal ) pause |
|
| 第5楼 w1314ich | 发表于 2008-04-01 23:16 |
| 中级用户 发帖 119 积分 234 | |
|
<a href="news.asp?id=842" 中的news.asp不能提取出来
还有 <form name="frm_login" method="post" action="chk_login.asp"> 中的chk_login.asp <form action=search.asp method=post ID="Form1" name=Form1> 中的search.asp <a href="xhxx1.asp?id=42"> 中的xhxxq.asp等被忽略了 输出的结果是 gywmen.asp index.asp xhjs1.asp hyzj1.asp xhxx1.asp hydt1.asp jlhz1.asp pxtd1.asp zcfg1.asp wscy.asp wlzwhjj.asp http://www.ec315.cn/onlinets.asp wsdj.asp qikan.asp admin/vote/vote_js.asp zddh.asp lxwm.asp wscy.asp jlhz1.asp http://www.sh-ec.org.cn/yqlj.asp [ Last edited by w1314ich on 2008-4-1 at 11:22 PM ] |
|
| 第6楼 bat-zw | 发表于 2008-04-01 23:19 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
我搞了个把小时,只能回句太难了,很多提不出来啊,主要是情况太复杂了。
|
|
| 第7楼 w1314ich | 发表于 2008-04-01 23:29 |
| 中级用户 发帖 119 积分 234 | |
|
非常感谢 你能把刚刚批处理的注释帮我写写么 最好能详细点 谢谢
|
|
| 第8楼 26933062 | 发表于 2008-04-01 23:43 |
| 银牌会员 发帖 879 积分 2,268 | |
|
苯办法,文件名中不能含有#号。
: |
|
| 第9楼 terse | 发表于 2008-04-01 23:45 |
| 银牌会员 发帖 946 积分 2,404 | |
|
@echo off
for /f "tokens=* delims=:" %%a in ('findstr /n "\.asp" a.txt') do ( set var=%%a setlocal enabledelayedexpansion set var=!var:*:=! set var=!var:*"=! set var=!var:"= ! set var=!var:?= ! set var=!var:^>= ! set var=!var:^<= ! if not "!var!"=="" for /f "tokens=1* delims= " %%i in ("!var!") do if "%%~xi"==".asp" (>>bak.txt echo %%i) else call :lp "%%j" endlocal ) pause goto :eof :lp for /f "tokens=1* delims= " %%i in ("%~1") do if "%%~xi"==".asp" (>>bak.txt echo %%i&goto :eof) else call :lp "%%j" |
|
| 第10楼 terse | 发表于 2008-04-01 23:47 |
| 银牌会员 发帖 946 积分 2,404 | |
|
发了才知道有了
|
|
| 第11楼 ThinKing | 发表于 2008-04-02 08:11 |
| 中级用户 发帖 207 积分 471 | |
|
为什么不直接:呢?
|
|
| 第12楼 bat-zw | 发表于 2008-04-02 13:32 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by w1314ich at 2008-4-1 23:29: @echo off 应楼主要求并尽我的能力为TERSE的这段精彩代码写下解释如下(如有错误和不到之处请谅解并指教): 批处理首先通过第一个for循环开启变量延迟以":"为分隔符对a.txt中每段字符串中的特殊字符(:"")进行变量替换为无,同时将特殊字符(?><)替换为空格" "(是为后面的for循环中delims= 做准备工作); 然后对替换后的这段字符串进行if判断是否为空,如不是空就进入第二个for循环又用if对以" "为分格符的第一个字符串%%i进行判断是否含有以.asp为后缀名的文件名(在这里使用了变量扩充%%~xi将变量%%i扩充到文件扩展名),如果有则将这串字符(%%i)添加输入到back.txt中,如不含有(else)则跳转到标签为lp的下一个for循环,并将%%i后所有字串符"%%j变量"传递给下一个for循环(注意在这里用双引号将%%j引起来是为了使下一个for循环中能正确识别含有空格的变量%%j); 在最后一个for循环中其实是不断重复前一个for循环的工作直到最后一个后缀名为.asp的字符串被取出添加到back.txt中,只不过是要在这里运用%%~1去除变量的双引号扩充变量%%~1(从上一个for循环中传递过来的加了双引号的变量"%%j")。 又是一个很难解释的过程,汗。。。。。。。。。。。。。。。 [ Last edited by zw19750516 on 2008-4-2 at 01:41 PM ] |
|
| 第13楼 bjsh | 发表于 2008-04-02 14:38 |
| 银牌会员 发帖 621 积分 2,000 | |
|
如果是我的话, 我会用python来解析。
还算相当简单的吧, 效率当然比批处理更高。。。 |
|
| 第14楼 abcd | 发表于 2008-04-02 14:47 |
| 银牌会员 发帖 739 积分 1,436 | |
|
处理此问题,VBS更简单高效。
何必在一棵树上吊死呢? |
|
| 第15楼 bat-zw | 发表于 2008-04-02 14:51 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
我不同意abcd的意见,我们处理这个问题是为了得到提高,不为了别的。
[ Last edited by zw19750516 on 2008-4-2 at 02:52 PM ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |