中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-29 08:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决] 求:多个html改名的批处理 查看 2,138 回复 18
楼 主 [已解决] 求:多个html改名的批处理 发表于 2007-03-31 10:52 ·  中国 黑龙江 牡丹江 电信
中级用户
★★
积分 216
发帖 129
注册 2007-02-14 07:26
19年会员
UID 79469
性别 男
状态 离线
在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 发表于 2007-03-31 11:05 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
提示:
for /f ......查找文件名,findstr "<title>"显示<title>一行,用for /f "tokens=1-3* delims=<>"截取需要的字符段
3 发表于 2007-03-31 11:36 ·  中国 黑龙江 牡丹江 电信
中级用户
★★
积分 216
发帖 129
注册 2007-02-14 07:26
19年会员
UID 79469
性别 男
状态 离线
我用for %%i in (*.htm) do type %%i|find /n "title">a.txt提取到了如 <title>公司新同事</title> 只是接下来不知如何写
4 发表于 2007-03-31 12:43 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
for /f "tokens=1,2,4 delims=<>:" %a in ('findstr "<title> </title>" D:\1\*.htm') do ren "%a:%b" "%c.htm"
5 发表于 2007-03-31 13:10 ·  中国 黑龙江 牡丹江 电信
中级用户
★★
积分 216
发帖 129
注册 2007-02-14 07:26
19年会员
UID 79469
性别 男
状态 离线
虽然不太理解还是试了 不能运行 还是感谢zh159 和everest79
真的有这么难吗?

[ Last edited by xswdong on 2007-3-31 at 12:12 AM ]
6 发表于 2007-03-31 13:38 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
不成功的提示是什么?
7 发表于 2007-03-31 14:21 ·  中国 黑龙江 牡丹江 电信
中级用户
★★
积分 216
发帖 129
注册 2007-02-14 07:26
19年会员
UID 79469
性别 男
状态 离线
什么提示也没有 我加pause 也一样 闪了一下就退出了
8 发表于 2007-03-31 14:23 ·  中国 黑龙江 牡丹江 电信
中级用户
★★
积分 216
发帖 129
注册 2007-02-14 07:26
19年会员
UID 79469
性别 男
状态 离线
什么提示都没有 我加pause也一样 闪一下就退出了
"%a:%b" 是什么意思 能解释一下吗?
9 发表于 2007-03-31 14:37 ·  中国 广东 广州 白云区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
19年会员
UID 75048
性别 男
状态 离线
Originally posted by xswdong at 2007-3-31 01:21 AM:
什么提示也没有 我加pause 也一样 闪了一下就退出了


貌似编码问题,文件的编码不是ANSI?
10 发表于 2007-03-31 16:19 ·  中国 广东 广州 联通
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
我还,会想心思。
呵呵。比我懒多了。
-------------------------------
好好努力学写脚本吧。。
这个东西写出来不难。。
只是调试又要花上大把时间。

另外提取出来的东西我在其他的帖子里已经有过类似的东西了。
你可以参考。
知,不觉多。不知,乃求知
11 发表于 2007-03-31 16:20 ·  中国 广东 广州 联通
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
@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 发表于 2007-03-31 16:21 ·  中国 广东 广州 联通
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
上面的这个批处理。可以提出<title>flyinspace</title>里的flyinspace

应该符合你的要求了。

其他的。你自己拼吧:)这样可以提高你的动手能力。
知,不觉多。不知,乃求知
13 发表于 2007-03-31 23:20 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
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 ]
14 发表于 2007-03-31 23:57 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
想来想去还是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
15 发表于 2007-04-01 00:17 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
<html>
<head>
<title>爱在厨房</title>的话,skip掉2行。。。应该比findstr /b "<title>" 它快吧
论坛跳转: