中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:怎样用批命令自动更新文本文档?
作者:
标题: 求助:怎样用批命令自动更新文本文档? 上一主题 | 下一主题
jolog
初级用户





积分 23
发帖 10
注册 2008-3-13
状态 离线
『楼 主』:  求助:怎样用批命令自动更新文本文档?

例如有文本文档:历史纪录.txt内容为:
(#####)
便民商店 s=1164.58元
(###########)

又有新建文本文档:20080311.txt内容为:
(*****)
便民商店 s=1236.73元
(***********)

目的是在保留20080311.txt不变的情况下
使得历史纪录.txt内容为:
(#####)
便民商店 s=1236.73元
(###########)

其中(*****)(***********)与(#####)(###########)
格式相同内容不同,代表很多其他内容!


我是新手
所以说起来很罗索
希望各位高手多见谅!

2008-3-14 19:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  


@echo off
set SrcFile=C:\test\20080311.txt
set DstFile=C:\test\历史纪录.txt
for /f "tokens=*" %%a in ('findstr "便民商店" "%SrcFile%"') do set change=%%a
for /f "usebackq delims= " %%a in ("%DstFile%") do (
  if "%%a" neq "便民商店" (
    >>"%DstFile%.txt" echo %%a
  ) else (
    >>"%DstFile%.txt" echo %change%
  )
)
del /q "%DstFile%"
ren "%DstFile%".txt "历史纪录.txt"


2008-3-14 20:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jolog
初级用户





积分 23
发帖 10
注册 2008-3-13
状态 离线
『第 3 楼』:  

谢谢2楼的!!!
真快啊!
不过我还是需要再问一下
可能是我说的不恰当让您误会了
我在一楼说的只是个个别的例子
我是想问:有什么方法能用文本2中
便民商店    与     元之间的内容
替换文本1中
便民商店    与     元之间的内容
您能帮我么?
谢谢了!!!

2008-3-14 20:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  


@Echo off & SetLocal EnableDelayedExpansion

set dstfile=历史纪录.txt
set srcfile=20080311.txt

for /f "tokens=2 delims==元" %%i in (%srcfile%) do set count=%%i

for /f "delims=" %%a in (%dstfile%) do (
    set string=%%a
    if "!string:~0,4!"=="便民商店" (
        >>_temp.txt echo.便民商店 s=%count%元
    ) else (
        >>_temp.txt echo.!string!
        )
    )
type _temp.txt > %dstfile%
del _temp.txt & start %dstfile%


2008-3-14 21:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jolog
初级用户





积分 23
发帖 10
注册 2008-3-13
状态 离线
『第 5 楼』:  

嗯!
好用!
谢谢了,~~!

2008-3-15 09:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 6 楼』:  

给个 一次性替换多个的
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims==" %%i in (历史纪录.txt) do (
      for /f "tokens=1* delims==" %%a in (20080311.txt) do (
           if "%%i"=="%%a" set "%%i=%%i=%%b"
           if not defined %%i set "%%i=%%i=%%j"
     )
>>tmp_a.txt echo !%%i!
)
move /y tmp_a.txt 历史纪录.txt
pause




简单!简单!再简单!
2008-3-15 15:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bailang3106
初级用户





积分 36
发帖 19
注册 2007-12-29
状态 离线
『第 7 楼』:  

找的真不容易 谢谢 学习了.

2008-5-8 14:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: