批处理文本文件的字符替换,解决用记事本替换时功能单一的问题,批处理高手该出手了。

假如有这么一个1.txt的文本文件,内容如下:--------------------------------------------------------aaaaaa... 假如有这么一个1.txt的文本文件,内容如下:
--------------------------------------------------------
a aa a a a aa a aa aa
n10 aa a aa aa a a aa a
a a aa a a aa aa aa aa
n20 a aa aa aa a aa a
aa aa aa a aa a a
... ...
--------------------------------------------------------
按如下两点要求进行替换:
一、把字符aa替换成a,把a替换成aa 。
二、在开头含有n标号的行不进行替换。
我发现用记事本的替换功能难以做到,所以想编写一个批处理来解决,
可是本人是批处理编制方面的菜鸟,刚学不久,所以被上面的问题难住了,盼望着高人能编写这个批处理程序,并且能够说一下理由。
再说明一点,a和aa是随机出现的,行号n只在行的开头,也是随机出现的。
展开
 我来答
xxpinqz
2013-12-18 · TA获得超过1323个赞
知道小有建树答主
回答量:1055
采纳率:0%
帮助的人:1316万
展开全部
@echo off
set "a=aa"
set "aa=a"
(for /f "tokens=1*" %%a in (1.txt) do (
  set "str=%%a"
  setlocal enabledelayedexpansion
  set "str=!str:~1!"
  set/a 1/str 2>nul&&set ".=%%a %%b"||for %%i in (%%a %%b)do set ".=!.!!%%i! "
  echo,!.!
  endlocal
))>$
move $ 1.txt
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lifei259
2013-12-18 · TA获得超过1061个赞
知道大有可为答主
回答量:2341
采纳率:48%
帮助的人:735万
展开全部
@echo off
set "a=aa"
set "aa=a"
(for /f "tokens=1*" %%a in (1.txt) do (
  set "str=%%a"
  setlocal enabledelayedexpansion
  set "str=!str:~0,1!"
  if "!str!"=="n" (set ".=%%a %%b") else (for %%i in (%%a %%b) do set ".=!.!!%%i! ")
  echo,!.!
  endlocal
))>new1.txt
pause
追问
不错不错,测试通过,但后来发现问题了,比如在现实中使用,字符a和aa之间可能有其他字符,或空格,就像如下的情况:
---------
a aa479a a 3a aa a
n10 aa 54a aa a a
a a aa987a623a aa
n20 a aa aa47aa aa
83aa aa a259 aa a a
...
--------
能不能排除其他字符的干扰,替换成功,条件相同。不知这位高人能否解决。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
videlord
2013-12-18 · TA获得超过1336个赞
知道大有可为答主
回答量:1518
采纳率:66%
帮助的人:438万
展开全部
DOS下batch文件处理,字符串操作太弱了,工具太少
如果用linux,sed, awk,一两行搞定
你不如装个sed for windows吧

如果你实在要纯DOS batch,得花一点时间帮你写,很久不碰了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-18
展开全部
建议你用Word来做,超级简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式