Board logo

标题: [文本处理] 批处理查找含有特定字符的行并替换 [打印本页]

作者: 随风    时间: 2007-11-16 05:23     标题: 批处理查找含有特定字符的行并替换

如A.TXT中某行有A字符则整行替换为B

在某处看到这个问题,懒的回答他,觉得题目虽然简单,但有点意识。
考考大家,看谁的代码最简洁,高效。
反正无聊,大家热闹热闹吧!


作者: youxi01    时间: 2007-11-16 07:53

你的要求简洁具体是什么意思?
是不是只完成 主体功能,象一些特殊字符就不考虑?
作者: novaa    时间: 2007-11-16 19:00

大家发下代码吧
我写的那么一大串就不发了
这个话题是比较有意义的
作者: 随风    时间: 2007-11-16 22:43

文本没有特殊字符
作者: novaa    时间: 2007-11-17 16:00

随风看完我的帖子后帮我解答下子我提的问题啊 呵呵
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set num=0
  4. for /f "delims=" %%a in (A.txt) do (
  5. set /a num+=1
  6. set var!num!=%%a
  7. echo %%a>!num!.txt
  8. )
  9. for /l %%a in (1 1 !num!) do (
  10. findstr /v /c:"A" %%a.txt >>11%%a.txt || echo B>>11%%a.txt
  11. )
  12. cd.>A.txt
  13. copy 11*.txt A.txt
  14. for /l %%a in (1 1 !num!) do (
  15. del %%a.txt 11%%a.txt
  16. )
  17. pause>nul
复制代码

作者: 随风    时间: 2007-11-17 16:51

厉害,
只怕是你会的命令都用上了。。。。
呵呵,开个玩笑,刚学能解决问题已经很不错了。继续努力。
个人认为,代码最好不要产生临时文件,万不得以时,也要尽量少产生。
慢慢完善吧。
作者: novaa    时间: 2007-11-17 18:13

o(∩_∩)o...
不过这个P有个BUG
会在最后一行显示一个方框状的黑长方形
不知道是为什么?
作者: 随风    时间: 2007-11-20 02:45

:
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "delims=" %%a in (a.txt) do (
  4.    set var=%%a
  5.    set num=!var:a=!
  6.    if not "!num!"=="!var!" (echo b) else echo %%a
  7. )
  8. pause
复制代码

作者: novaa    时间: 2007-11-20 08:03

  1. 精简
  2. 通过
  3. 但是我又一字符串    哈哈fjkigjlkglkdf[novaa]我我你你他她
  4. 该如何去除除[novaa]
  5. 除了用 %var:[novaa]=%
  6. 还有个疑问
  7. 可以用[*]的形式不? (我测试发现好像不行)
复制代码

[ 本帖最后由 novaa 于 2007-11-20 08:09 编辑 ]
作者: xxx3212    时间: 2007-12-22 21:27

这个不是在中国批处理论坛见过的吗?
那个叫1234567的人是不是版主




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2