中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]一个提取 替换的问题 希望大家能帮帮我
作者:
标题: [求助]一个提取 替换的问题 希望大家能帮帮我 上一主题 | 下一主题
lzymbz
初级用户




积分 114
发帖 8
注册 2005-4-21
状态 离线
『楼 主』:  [求助]一个提取 替换的问题 希望大家能帮帮我

现在有一个文本文件 好比dy.txt 这个文件中有些字符 需要读取 并写入另一个文件中xxx.html 先贴dy.txt(示例数据)
品种	最新价	涨跌	涨跌幅	最高价	最低价
1	1362.4	1362.4	1362.4	1362.4	1362.4
2	1362.4	1362.4	1362.4	1362.4	1362.4
3	1362.4	1362.4	1362.4	1362.4	1362.4
4	1362.4	1362.4	1362.4	1362.4	1362.4
5	1362.4	1362.4	1362.4	1362.4	1362.4
6	1362.4	1362.4	1362.4	1362.4	1362.4
7	1362.4	1362.4	1362.4	1362.4	1362.4
8	1362.4	1362.4	1362.4	1362.4	1362.4
9	1362.4	1362.4	1362.4	1362.4	1362.4
10	1362.4	1362.4	1362.4	1362.4	1362.4
11	1362.4	1362.4	1362.4	1362.4	1362.4
12	1362.4	1362.4	1362.4	1362.4	1362.4
13	1362.4	1362.4	1362.4	1362.4	1362.4
14	1362.4	1362.4	1362.4	1362.4	1362.4
15	1362.4	1362.4	1362.4	1362.4	1362.4
16	1362.4	1362.4	1362.4	1362.4	1362.4
17	1362.4	1362.4	1362.4	1362.4	1362.4
18	1362.4	1362.4	1362.4	1362.4	1362.4
19	1362.4	1362.4	1362.4	1362.4	1362.4
20	1362.4	1362.4	1362.4	1362.4	1362.4
21	1362.4	1362.4	1362.4	1362.4	1362.4
模板文件xxx.html
<html>
<head>
<script>
function iframeResizeHeight(frame_name,body_name,offset) {
parent.document.getElementById(frame_name).height=document.getElementById(body_name).offsetHeight+offset;
}
function Resize(){
 var frame_name="main_info";
 var body_name="main";
 if(parent.document.getElementById(frame_name)){
  return iframeResizeHeight(frame_name,body_name,0);
 }
}
</script>
</head>
<body onLoad="Resize();">
<div id="main">
XXX
</div>
</body>
</html>
我需要得到的就是 最后能生成xxx.html 提取dy.txt的数据替换xxx.html中的xxx然后最后的数据 是这样的 注意后面每一行都会比原数据多一个<br>
<html>
<head>
<script>
function iframeResizeHeight(frame_name,body_name,offset) {
parent.document.getElementById(frame_name).height=document.getElementById(body_name).offsetHeight+offset;
}
function Resize(){
 var frame_name="main_info";
 var body_name="main";
 if(parent.document.getElementById(frame_name)){
  return iframeResizeHeight(frame_name,body_name,0);
 }
}
</script>
</head>
<body onLoad="Resize();">
<div id="main">
  品种	最新价	涨跌	涨跌幅	最高价	最低价<br>
  1	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  2	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  3	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  4	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  5	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  6	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  7	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  8	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  9	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  10	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  11	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  12	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  13	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  14	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  15	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  16	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  17	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  18	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  19	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  20	1362.4	1362.4	1362.4	1362.4	1362.4<br>
  21	1362.4	1362.4	1362.4	1362.4	1362.4<br>
</div>
</body>
</html>
现在我在论坛查了一下 初步搞出来这个
@echo off
setlocal enabledelayedexpansion
for %%i in ("xxx.html") do set file=%%~fi

for /f "delims=" %%i in ('type "xxx.html"') do (
    set str=%%i
    set "str=!str:XXX=替换字符串!"
    echo !str!>>"xxx.html"_tmp.txt
)
copy "xxx.html" "xxx.html"_bak.txt >nul 2>nul
move "xxx.html"_tmp.txt "xxx.html"
start "" "xxx.html"
倒是能替换 可是不知道怎么处理读出dy.txt的数据变化后写入 哪位能给完善一下 谢谢了 [ Last edited by lzymbz on 2010-11-28 at 02:04 ]


2010-11-28 02:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 2 楼』:  

可以在判断出这个标志行之后循环输出 dy.txt
@echo off
setlocal enabledelayedexpansion
for %%i in ("xxx.html") do set file="%%~fi"

for /f "delims=" %%i in ('type "xxx.html"') do (
    set str=%%i
    if not !str!==!str:XXX=! for /f "delims=" %%z in ('type "dy.txt"') do (echo %%z^<br^>>>%file%_tmp.txt)
    echo !str!>>%file%_tmp.txt
)
move %file%_tmp.txt "XXX_new.html"
notepad "" "XXX_new.html"
HTML的东西如果要精确操作的话用批处理不太合适,脚本语言比较好操作一点,用 IE 打开 xxx.html ,然后再地址栏粘贴下面这行,按回车就好了。
javascript:with(new ActiveXObject("Scripting.FileSystemObject")){main.innerText=OpenTextFile("dy.txt").ReadAll();CreateTextFile("xxx_new.html",true).Write(document.documentElement.outerHTML);alert("see xxx_new.html !");document.execCommand("refresh");}


2010-11-28 05:29
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
lzymbz
初级用户




积分 114
发帖 8
注册 2005-4-21
状态 离线
『第 3 楼』:  

不好意思 是这样 我试完后不是替换 而是追加啊 就是将dy.txt的内容添加到xxx前面了 能不能再给改改


2010-11-28 09:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 4 楼』:  

比较dy.txt与xxx.html中<div id="main">与</div>之间的内容是否相同(ansi比较,允许某文件多出空行等),如果不同则替换内容。 本代码未经过实际运行测试!
@echo off&setlocal enabledelayedexpansion
(for /f "delims=" %%a in ('type "xxx.html"') do (
	if "%%a"=="</div>" set han=0
	if "!han!"=="1" set a=%%a&set "a=!a:<br>=!"&echo !a!
	if "%%a"=="<div id="main">" set han=1))>dy_.txt
>nul fc /a /l /w dy.txt dy_.txt||call:xing
del /q dy_.txt
exit
:xing:不同时执行
(for /f "delims=" %%a in ('type "xxx.html"') do (
	if "%%a"=="</div>" set ye=0
	if not "!ye!"=="1" (echo %%a) else (
		if not defined gu for /f "delims=" %%b in ('type "dy.txt"') do echo %%b^<br^>
		set gu=1
	)
	if "%%a"=="<div id="main">" set ye=1))>xxx_.html
del /q xxx.html
ren xxx_.html xxx.html
[ Last edited by Hanyeguxing on 2010-11-29 at 13:43 ]




2010-11-29 13:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: