中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 09:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理-文本文档中的数据覆盖 查看 856 回复 6
楼 主 [求助]批处理-文本文档中的数据覆盖 发表于 2009-01-06 11:07 ·  中国 四川 成都 教育网
新手上路
积分 5
发帖 5
注册 2009-01-05 18:25
17年会员
UID 135861
性别 男
状态 离线
文本文档A.txt和B.txt中存有很多数据,现在只是将B.txt中的前9个字符读出覆盖掉

A.txt文件头部的前9个字符(注:两个文件中的数据都不止一行,每行都不止9个字符 ),请问如何用批处理实现?


问题的详细描述:

B.txt和A.txt中的每行前九个字符都是数字,只覆盖第一行的,其它行不处理。
如B.txt 中为

17.735816,21.335872,21.335872
22.761335,22.761339,22.761343
23.452122,23.452132,23.452143


A.txt 中为

21.335872,21.335872,21.335872
22.761335,22.761335,22.761335
23.452122,23.452122,23.452122

只是读取计算后得到的B.txt中第一行前九个字符(17.735816 每次计算的结果不同,但是都保存在B.txt中第一行前九个字符)替换掉A.txt中第一行前九个字符(21.335872 为初始数据,随初始条件改变而改变,但是要替换的数据位置在A.txt中第一行的前九个字符)

[ Last edited by condor on 2009-1-6 at 20:19 ]
2 发表于 2009-01-06 11:28 ·  中国 江苏 苏州 电信
初级用户
积分 20
发帖 13
注册 2009-01-05 14:58
17年会员
UID 135829
性别 男
状态 离线
问题不详细哦

1、是不是B.txt中的每行前九个字符都要覆盖掉A.txt中的对应行的前就各字符
2、字符是否也算空格呢?(空格要不要也覆盖)
3、如果没有空格那是不是所有的前九个字符都连在一起呢
3 发表于 2009-01-06 12:39 ·  中国 四川 成都 教育网
新手上路
积分 5
发帖 5
注册 2009-01-05 18:25
17年会员
UID 135861
性别 男
状态 离线
Originally posted by BaseCoder at 2009-1-6 11:28:
问题不详细哦

1、是不是B.txt中的每行前九个字符都要覆盖掉A.txt中的对应行的前就各字符
2、字符是否也算空格呢?(空格要不要也覆盖)
3、如果没有空格那是不是所有的前九个字符都连在一起呢




B.txt和A.txt中的每行前九个字符都是数字,只覆盖第一行的,其它行不处理。
如B.txt 中为

17.735816,21.335872,21.335872
22.761335,22.761339,22.761343
23.452122,23.452132,23.452143


A.txt 中为

21.335872,21.335872,21.335872
22.761335,22.761335,22.761335
23.452122,23.452122,23.452122

只是读取计算后得到的B.txt中第一行前九个字符(17.735816 每次计算的结果不同,但是都保存在B.txt中第一行前九个字符)替换掉A.txt中第一行前九个字符(21.335872 为初始数据,随初始条件改变而改变,但是要替换的数据位置在A.txt中第一行的前九个字符)
4 Re 3楼 发表于 2009-01-06 19:45 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
建议把详细的问题描述更新到顶楼,以便更多人查看。
5 发表于 2009-01-26 01:16 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@echo off& setlocal enabledelayedexpansion
set /p var=<b.txt >nul
set var=%var:~0,9%
set _n=0
for /f "delims=" %%a in ('findstr /o .* a.txt') do (
set str=%%a
set str=!str:*:=!
if "!_n!"=="0" (set _n=1&echo.!var!!str:~9!>a.txt) else (echo.!str!>>a.txt)
)
set /p str=<a.txt>nul
if "%str:~0,9%"=="%var%" echo 替换成功
pause

[ Last edited by netbenton on 2009-1-26 at 01:18 ]
精简
=> 个人网志
6 发表于 2009-02-25 23:14 ·  中国 四川 成都 教育网
新手上路
积分 5
发帖 5
注册 2009-01-05 18:25
17年会员
UID 135861
性别 男
状态 离线
非常感谢!
7 发表于 2009-02-26 00:17 ·  中国 四川 成都 教育网
新手上路
积分 5
发帖 5
注册 2009-01-05 18:25
17年会员
UID 135861
性别 男
状态 离线
谢谢netbenton,实现方法好巧哦!
论坛跳转: