Board logo

标题: 求助:怎样用批命令自动更新文本文档? [打印本页]

作者: jolog     时间: 2008-3-14 19:30    标题: 求助:怎样用批命令自动更新文本文档?

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

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

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

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


我是新手
所以说起来很罗索
希望各位高手多见谅!
作者: HAT     时间: 2008-3-14 20:06

@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"

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

@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%

作者: jolog     时间: 2008-3-15 09:47
嗯!
好用!
谢谢了,~~!
作者: terse     时间: 2008-3-15 15:32
给个 一次性替换多个的
@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

作者: bailang3106     时间: 2008-5-8 14:05
找的真不容易 谢谢 学习了.