如何用批处理实现替换指定文件里面的某行某列内容 20

例如,文件夹里有11.txt,22.txt,33.txt三个记事本文件,先判断是否存在文件22.txt,如果存在的话,则将11.txt文件中第5行44至64列的内容改为0... 例如,文件夹里有11.txt,22.txt,33.txt三个记事本文件,先判断是否存在文件22.txt,如果存在的话,则将11.txt文件中第5行44至64列的内容改为0。(其中11.txt文件中第5行44至64列的内容为一个负数)因为这个负数是变化的,所以不能指定这个数到底是多少,只能指定这个数所在位置,然后将其替换。 展开
 我来答
百度网友e1ba1a7
2014-11-29 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2308
采纳率:50%
帮助的人:873万
展开全部

不用批处理,给你写个程序行么

string path = Directory.GetCurrentDirectory().ToString();
            if (File.Exists(@path + "\\22.txt"))
            {
                string[] line = File.ReadAllLines(@path + "\\11.txt");
                string s = line[4];
                s = s.Substring(43, 63);
                string ss = String.Empty;
                for (int i = 0; i <= 20; i++)
                {
                    ss += "0";
                }
                    line[4] = line[4].Replace(s, ss);
                File.WriteAllLines(@path + "\\11.txt", line);
            }
            else
            {
                MessageBox.Show(@path + "\\22.txt 不存在!", "", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }


程序编译好了,用C#写的,跟批处理一样用!


更多追问追答
追问
不行啊,要用批处理实现才可以的,您看,能帮我实现吗?谢谢了
不行啊,要用批处理实现才可以的,您看,能帮我实现吗?谢谢了
百度网友dadee7f
2014-11-30 · TA获得超过1869个赞
知道小有建树答主
回答量:867
采纳率:67%
帮助的人:392万
展开全部
用Vbs行不行?虽然不是批处理,但好歹是脚本,不用另外装软件…
追问
谢谢你,你帮我写一个,我试试看看行不行吧,好吗?我要实现的就是判断要是不存在22.txt就将11.txt中的 beng_out 后面的数字改为0(如上图的-5.8291197,但是这个数字不是固定的)
追答
Set fso = WScript.CreateObject("Scripting.Filesystemobject")

If fso.FileExists("22.txt") Then

tempfilename="tfn11.txt"'临时文件名

Set ftemp=fso.CreateTextFile(tempfilename,True)

Set fa=fso.OpenTextFile("11.txt",1)

For i=1 To 4

ftemp.WriteLine(fa.ReadLine)

Next

str=fa.Read(43)'从第1列读到43列

ftemp.Write(str)'写到临时文件里

For i=44 To 64 '改写44到64列

fa.Skip(1)

ftemp.Write("0")

Next

do until fa.AtEndOfStream 

ftemp.Write(fa.Read(1))

Loop 

fa.Close

ftemp.Close

fso.CopyFile tempfilename,"11.txt",True

fso.DeleteFile tempfilename

Else

MsgBox "不存在22.txt"

End If
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albumin
2014-11-29 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2381万
展开全部
@echo off&setlocal enabledelayedexpansion
if exist 22.txt (
cd . >#
for /f "tokens=1* delims=:" %%a in ('findstr /n .* 11.txt') do (
if %%a EQU 5 (
set "line=%%b"
echo !line:~0,42! 0 !line:~64! >#
) else echo %%b >#
)
move # 11.txt
)
追问

大神,你这个很接近了,我刚试了下,但是他把前面5行都删掉了......你能帮忙调试一下吗?谢谢了(下面这个就是要修改的那个文件中的内容,我在想,是不是可以直接将所有的数字改为0,这个会简单一点呢)可以加你QQ吗

追答
@echo off&setlocal enabledelayedexpansion
if exist 22.txt (
cd . >#
for /f "tokens=1* delims=:" %%a in ('findstr /n .* 11.txt') do (
if %%a EQU 5 (
set "line=%%b"
echo !line:~0,42! 0 !line:~64! >>#
) else echo.%%b >>#
)
move # 11.txt
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式