中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-07 20:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用其他文本内容覆盖某一文本指定段落的内容 查看 2,649 回复 11
楼 主 如何用其他文本内容覆盖某一文本指定段落的内容 发表于 2006-10-28 03:00 ·  中国 北京 鹏博士BGP
新手上路
积分 12
发帖 5
注册 2006-10-27 21:46
19年会员
UID 68526
性别 女
状态 离线

──────────────── 版务记录 ────────────────
执行:namejm
原标题:txt文本内容处理问题
修改后标题:如何用其他文本内容覆盖某一文本指定段落的内容
说明:因原标题过于模糊,不便于论坛的搜索和管理,在本提示发表三日之后,
  楼主尚未更改标题,现由本人强制修改标题,并扣除楼主2点积分。
──────────────── 版务记录 ────────────────


有a.txt和b.txt两个文件(内容纯属虚构,但足以表达我的意思):
a.txt内容如下:
:
monday
:
yang li
wang yu
shan liang
:
meeting
study

b.txt的内容如下:
zhou zhuo
tian li
shang xiao nan
sun chao

能不能用一个bat实现如下功能:
每次先删除a.txt中:后面的所有人名,然后把b.txt中的人名内容加到其中,使其变成如下显示:
a.txt:
:
monday
:
zhou zhuo
tian li
shang xiao nan
sun chao
:
meeting
study

以后b中的内容可能总是会变,我只是想一执行bat,就把它们都导入a.txt中的name 后面。
如果bat实现不了这种操作,能不能告诉我用vbs怎么编写?
另外还有一个问题,如何在批处理文件中启动执行一个vbs呢?

期待大家的回答,thanks in advance!!!!!!!!!!!!!!!!!!!!!

[ Last edited by namejm on 2007-1-25 at 01:00 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
namejm -2 2007-01-26 01:59
2 发表于 2006-10-28 04:34 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
试试这个命令,写在一行有点长。

sed -e "/\:/,/\:/{/^ */d}" -e "/\:/rb.txt" a.txt


sed 下载地址:http://www.student.northpark.edu/pemente/sed/gsed407x.zip
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +10 2006-10-28 05:17
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

3 发表于 2006-10-28 04:45 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
4 发表于 2006-10-28 04:55 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  这个是 sed 命令的错误提示。是语法错误了吧。。
5 发表于 2006-10-28 04:55 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
6 发表于 2006-10-28 04:56 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
7 发表于 2006-10-28 04:57 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
Re qwe1234567
这是错误提示,老兄换个高版本的再试一下,把二楼的链接下下来。
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

8 发表于 2006-10-28 05:00 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  要查看帮助还要这样打才行:"sed -h"
9 发表于 2006-10-28 05:16 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
一会儿好几贴了,没有看到你们先前的回复。我晕,我以为用老的版本运行出现的错误提示呢。不过老的版本 sed 302 运行确实有问题,得小改动一下。

sed -e "/\:/,/\:/{/^ */d;}" -e "/\:/rb.txt" a.txt
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

10 发表于 2006-10-28 05:17 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
这个太强大了,欣赏~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
11 发表于 2006-10-28 05:50 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  如果非得用批处理来解决不可的话,可以试试下面的代码(如果a.txt中的行数量十分巨大的话,速度将会比较慢):

@echo off
cd.>test.txt
for /f "tokens=1* delims=:" %%i in ('findstr /n . a.txt') do (
if not "%%j"==":" (>>test.txt echo %%j) else (
set line=%%i&goto insert
)
)

:insert
>>test.txt echo :
>>test.txt type b.txt
>>test.txt echo.

set flag=1
for /f "skip=%line% delims=" %%i in (a.txt) do (
if "%%i"==":" set flag=
if not defined flag >>test.txt echo %%i

)
)
start test.txt


[ Last edited by namejm on 2007-1-25 at 12:54 PM ]
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
12 发表于 2006-10-29 23:07 ·  中国 北京 电信
新手上路
积分 12
发帖 5
注册 2006-10-27 21:46
19年会员
UID 68526
性别 女
状态 离线
谢谢大家的帮助,我知道啦~~~
论坛跳转: