中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决] 求:多个html改名的批处理
<<   [1] [2]  >>   >
作者:
标题: [已解决] 求:多个html改名的批处理 取消高亮 | 上一主题 | 下一主题
xswdong
中级用户





积分 216
发帖 129
注册 2007-2-14
状态 离线
『楼 主』:  [已解决] 求:多个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 ]


2007-3-31 10:52
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 2 楼』:  

提示: for /f ......查找文件名,findstr "<title>"显示<title>一行,用for /f "tokens=1-3* delims=<>"截取需要的字符段


2007-3-31 11:05
查看资料  发短消息  网志   编辑帖子  回复  引用回复
xswdong
中级用户





积分 216
发帖 129
注册 2007-2-14
状态 离线
『第 3 楼』:  

我用for %%i in (*.htm) do type %%i|find /n "title">a.txt提取到了如 <title>公司新同事</title> 只是接下来不知如何写


2007-3-31 11:36
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 4 楼』:  

for /f "tokens=1,2,4 delims=<>:" %a in ('findstr "<title> </title>" D:\1\*.htm') do ren "%a:%b" "%c.htm"


2007-3-31 12:43
查看资料  发短消息  网志   编辑帖子  回复  引用回复
xswdong
中级用户





积分 216
发帖 129
注册 2007-2-14
状态 离线
『第 5 楼』:  

虽然不太理解还是试了 不能运行 还是感谢zh159 和everest79 真的有这么难吗? [ Last edited by xswdong on 2007-3-31 at 12:12 AM ]


2007-3-31 13:10
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 6 楼』:  

不成功的提示是什么?


2007-3-31 13:38
查看资料  发短消息  网志   编辑帖子  回复  引用回复
xswdong
中级用户





积分 216
发帖 129
注册 2007-2-14
状态 离线
『第 7 楼』:  

什么提示也没有 我加pause 也一样 闪了一下就退出了


2007-3-31 14:21
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
xswdong
中级用户





积分 216
发帖 129
注册 2007-2-14
状态 离线
『第 8 楼』:  

什么提示都没有 我加pause也一样 闪一下就退出了 "%a:%b" 是什么意思 能解释一下吗?


2007-3-31 14:23
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 9 楼』:  

Originally posted by xswdong at 2007-3-31 01:21 AM: 什么提示也没有 我加pause 也一样 闪了一下就退出了
貌似编码问题,文件的编码不是ANSI?


2007-3-31 14:37
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 10 楼』:  

我还,会想心思。 呵呵。比我懒多了。 ------------------------------- 好好努力学写脚本吧。。 这个东西写出来不难。。 只是调试又要花上大把时间。 另外提取出来的东西我在其他的帖子里已经有过类似的东西了。 你可以参考。




知,不觉多。不知,乃求知
2007-3-31 16:19
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 11 楼』:  

@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




知,不觉多。不知,乃求知
2007-3-31 16:20
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 12 楼』:  

上面的这个批处理。可以提出<title>flyinspace</title>里的flyinspace 应该符合你的要求了。 其他的。你自己拼吧:)这样可以提高你的动手能力。




知,不觉多。不知,乃求知
2007-3-31 16:21
查看资料  发短消息  网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 13 楼』:  

flyinspace兄写的有点复杂了吧 看看这个呢; 试试行不行
  1. @echo off
  2. for /f %%a in ('dir /b /a D:\文章\目录\*.htm') do set "old_name=%%a" & call :re_name
  3. goto exit
  4. :re_name
  5. for /f "tokens=2 delims=<>" %%b in ('findstr /b "<title>" D:\文章\目录\%old_name%') do set "new_name=%%b.htm"
  6. move %old_name% D:\文章\
  7. ren D:\文章\%old_name% %new_name%
  8. :exit
BJSH发表于: 2007-03-31 10:26
[ Last edited by bjsh on 2007-3-31 at 11:20 AM ]


2007-3-31 23:20
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 14 楼』:  

想来想去还是everest79 的代码高明简洁啊; 从他那学到不少; 给他的那句话改成批处理形式的再加上转移到d:\文章就成了下面的代码了
  1. @echo off
  2. for /f "tokens=1,2,4 delims=<>:" %%a in ('findstr /b "<title>" D:\文章\目录\*.htm') do ren "%%a:%%b" "%%c.htm"
  3. move d:\文章\目录\*.htm d:\文章\
BJSH发表于: 2007-03-31 10:47


2007-3-31 23:57
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 15 楼』:  

<html> <head> <title>爱在厨房</title>的话,skip掉2行。。。应该比findstr /b "<title>" 它快吧


2007-4-1 00:17
查看资料  发短消息  网志   编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: