![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-24 22:55 |
共 47,813 主题排行 / 349,918 发帖 / 今日 1 篇 / 48,274 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已解决] 求:多个html改名的批处理 |
| 可打印版本 2,526 / 18 |
| 第1楼 xswdong | 发表于 2007-03-31 10:52 |
| 中级用户 发帖 129 积分 216 | |
|
[已解决] 求:多个html改名的批处理 在D:\文章\目录下有三百个htm文件 ,名字是1-300 想把他们改名,利用<title>公司新同事</title> 在标题里寻找如:“公司新同事”并用它命名。试了很久没能成功,请高手帮忙。先谢谢了
<html> <head> <title>爱在厨房</title> 就是想利用网页原代码中的:"爱在厨房"作为文件名,替换1.htm 。文件放在 d:\文章\ [ Last edited by xswdong on 2007-3-31 at 09:37 PM ] |
|
| 第2楼 zh159 | 发表于 2007-03-31 11:05 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
提示:
for /f ......查找文件名,findstr "<title>"显示<title>一行,用for /f "tokens=1-3* delims=<>"截取需要的字符段 |
|
| 第3楼 xswdong | 发表于 2007-03-31 11:36 |
| 中级用户 发帖 129 积分 216 | |
|
我用for %%i in (*.htm) do type %%i|find /n "title">a.txt提取到了如 <title>公司新同事</title> 只是接下来不知如何写
|
|
| 第4楼 everest79 | 发表于 2007-03-31 12:43 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
for /f "tokens=1,2,4 delims=<>:" %a in ('findstr "<title> </title>" D:\1\*.htm') do ren "%a:%b" "%c.htm"
|
|
| 第5楼 xswdong | 发表于 2007-03-31 13:10 |
| 中级用户 发帖 129 积分 216 | |
|
虽然不太理解还是试了 不能运行 还是感谢zh159 和everest79
真的有这么难吗? [ Last edited by xswdong on 2007-3-31 at 12:12 AM ] |
|
| 第6楼 everest79 | 发表于 2007-03-31 13:38 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
不成功的提示是什么?
|
|
| 第7楼 xswdong | 发表于 2007-03-31 14:21 |
| 中级用户 发帖 129 积分 216 | |
|
什么提示也没有 我加pause 也一样 闪了一下就退出了
|
|
| 第8楼 xswdong | 发表于 2007-03-31 14:23 |
| 中级用户 发帖 129 积分 216 | |
|
什么提示都没有 我加pause也一样 闪一下就退出了
"%a:%b" 是什么意思 能解释一下吗? |
|
| 第9楼 dikex | 发表于 2007-03-31 14:37 |
| 高级用户 发帖 366 积分 788 | |
Originally posted by xswdong at 2007-3-31 01:21 AM: 貌似编码问题,文件的编码不是ANSI? |
|
| 第10楼 flyinspace | 发表于 2007-03-31 16:19 |
| 银牌会员 发帖 517 积分 1,206 | |
|
我还,会想心思。
呵呵。比我懒多了。 ------------------------------- 好好努力学写脚本吧。。 这个东西写出来不难。。 只是调试又要花上大把时间。 另外提取出来的东西我在其他的帖子里已经有过类似的东西了。 你可以参考。 |
|
| 第11楼 flyinspace | 发表于 2007-03-31 16:20 |
| 银牌会员 发帖 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 |
|
| 第12楼 flyinspace | 发表于 2007-03-31 16:21 |
| 银牌会员 发帖 517 积分 1,206 | |
|
上面的这个批处理。可以提出<title>flyinspace</title>里的flyinspace
应该符合你的要求了。 其他的。你自己拼吧:)这样可以提高你的动手能力。 |
|
| 第13楼 bjsh | 发表于 2007-03-31 23:20 |
| 银牌会员 发帖 621 积分 2,000 | |
|
flyinspace兄写的有点复杂了吧
看看这个呢; 试试行不行
[ Last edited by bjsh on 2007-3-31 at 11:20 AM ] |
|
| 第14楼 bjsh | 发表于 2007-03-31 23:57 |
| 银牌会员 发帖 621 积分 2,000 | |
|
想来想去还是everest79 的代码高明简洁啊;
从他那学到不少; 给他的那句话改成批处理形式的再加上转移到d:\文章就成了下面的代码了
|
|
| 第15楼 slore | 发表于 2007-04-01 00:17 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
<html>
<head> <title>爱在厨房</title>的话,skip掉2行。。。应该比findstr /b "<title>" 它快吧 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |