中国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 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-11-29 13:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: