标题: [文本处理] 批处理查找含有特定字符的行并替换 [打印本页]
作者: 随风 时间: 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
随风看完我的帖子后帮我解答下子我提的问题啊 呵呵- @echo off
- setlocal enabledelayedexpansion
- set num=0
- for /f "delims=" %%a in (A.txt) do (
- set /a num+=1
- set var!num!=%%a
- echo %%a>!num!.txt
- )
- for /l %%a in (1 1 !num!) do (
- findstr /v /c:"A" %%a.txt >>11%%a.txt || echo B>>11%%a.txt
- )
- cd.>A.txt
- copy 11*.txt A.txt
- for /l %%a in (1 1 !num!) do (
- del %%a.txt 11%%a.txt
- )
- pause>nul
复制代码
作者: 随风 时间: 2007-11-17 16:51
厉害,
只怕是你会的命令都用上了。。。。
呵呵,开个玩笑,刚学能解决问题已经很不错了。继续努力。
个人认为,代码最好不要产生临时文件,万不得以时,也要尽量少产生。
慢慢完善吧。
作者: novaa 时间: 2007-11-17 18:13
o(∩_∩)o...
不过这个P有个BUG
会在最后一行显示一个方框状的黑长方形
不知道是为什么?
作者: 随风 时间: 2007-11-20 02:45
:- @echo off
- setlocal EnableDelayedExpansion
- for /f "delims=" %%a in (a.txt) do (
- set var=%%a
- set num=!var:a=!
- if not "!num!"=="!var!" (echo b) else echo %%a
- )
- pause
复制代码
作者: novaa 时间: 2007-11-20 08:03
- 精简
- 通过
- 但是我又一字符串 哈哈fjkigjlkglkdf[novaa]我我你你他她
- 该如何去除除[novaa]
- 除了用 %var:[novaa]=%
- 还有个疑问
- 可以用[*]的形式不? (我测试发现好像不行)
复制代码
[ 本帖最后由 novaa 于 2007-11-20 08:09 编辑 ]
作者: xxx3212 时间: 2007-12-22 21:27
这个不是在中国批处理论坛见过的吗?
那个叫1234567的人是不是版主
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |