中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 10:42
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:怎样用批命令自动更新文本文档? 查看 812 回复 6
楼 主 求助:怎样用批命令自动更新文本文档? 发表于 2008-03-14 19:30 ·  中国 天津 电信
初级用户
积分 23
发帖 10
注册 2008-03-13 18:30
18年会员
UID 112874
性别 男
状态 离线
例如有文本文档:历史纪录.txt内容为:
(#####)
便民商店 s=1164.58元
(###########)

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

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

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


我是新手
所以说起来很罗索
希望各位高手多见谅!
2 发表于 2008-03-14 20:06 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线

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

3 发表于 2008-03-14 20:27 ·  中国 天津 电信
初级用户
积分 23
发帖 10
注册 2008-03-13 18:30
18年会员
UID 112874
性别 男
状态 离线
谢谢2楼的!!!
真快啊!
不过我还是需要再问一下
可能是我说的不恰当让您误会了
我在一楼说的只是个个别的例子
我是想问:有什么方法能用文本2中
便民商店 与 元之间的内容
替换文本1中
便民商店 与 元之间的内容
您能帮我么?
谢谢了!!!
4 发表于 2008-03-14 21:02 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
@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%
5 发表于 2008-03-15 09:47 ·  中国 天津 电信
初级用户
积分 23
发帖 10
注册 2008-03-13 18:30
18年会员
UID 112874
性别 男
状态 离线
嗯!
好用!
谢谢了,~~!
6 发表于 2008-03-15 15:32 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
给个 一次性替换多个的

@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
简单!简单!再简单!
7 发表于 2008-05-08 14:05 ·  中国 北京 联通
初级用户
积分 36
发帖 19
注册 2007-12-29 10:53
18年会员
UID 107102
性别 男
状态 离线
找的真不容易 谢谢 学习了.
论坛跳转: