标题: [文本处理] 批处理:文本处理综合问题 [打印本页]
作者: hackf 时间: 2009-10-8 11:18 标题: 批处理:文本处理综合问题
问题是
a.txt内容有:
dfasf
fadsfasfs
dfasfas
fdasfas
dfasfa
asdfas
sadfas
dsaf
..........
b.txt内容有:
1
2
3( 把a.txt 的内容按行替换"3"这个字符,并每替换一次就保存为(以保存的次数命名).txt,直到a.txt最后一行完成,停止.
4
5
6
运行后第一个保存的1.txt内容是
1
2
dfasf
4
5
6
[ 本帖最后由 hackf 于 2009-10-11 11:48 编辑 ]
作者: Seter 时间: 2009-10-8 11:24
题意不清,什么叫"依次把3替换"?
作者: hackf 时间: 2009-10-8 11:47
原帖由 Seter 于 2009-10-8 11:24 发表
题意不清,什么叫"依次把3替换"?
呵呵,对不起,偶表答的不是很清楚,已重新编辑了
[ 本帖最后由 hackf 于 2009-10-8 11:55 编辑 ]
作者: Seter 时间: 2009-10-8 12:07
继续提问
53,35,535这样的替换吗?
若替换,字符5仍然保存么
[ 本帖最后由 Seter 于 2009-10-8 12:09 编辑 ]
作者: hackf 时间: 2009-10-8 12:21
原帖由 Seter 于 2009-10-8 12:07 发表
继续提问
53,35,535这样的替换吗?
若替换,字符5仍然保存么
谢谢,您把问题分析得非常详细,再次感谢您的关注,那个5不保存,当然偶也很想知道如果5仍然保存的话,要怎么写呢?
[ 本帖最后由 hackf 于 2009-10-8 12:28 编辑 ]
作者: asnahu 时间: 2009-10-8 12:30
- @echo off & setlocal enabledelayedexpansion
- set n=0
- set m=1
- for /f "delims=" %%i in (a.txt) do (
- for /f "delims=" %%a in (b.txt) do (
- set /a n+=1
- if not !n! equ 3 (echo/%%~a) else (echo/%%~i)
- )>>!m!.txt
- set n=0
- set /a m+=1
- )
- exit
复制代码
[ 本帖最后由 asnahu 于 2009-10-8 12:39 编辑 ]
作者: hackf 时间: 2009-10-8 12:44
原帖由 asnahu 于 2009-10-8 12:30 发表
@echo off & setlocal enabledelayedexpansion
set n=0
set m=1
for /f "delims=" %%i in (a.txt) do (
for /f "delims=" %%a in (b.txt) do (
set /a n+=1
if not ! ...
谢谢,不过这代码是把b.txt的第三行替换了,我们那个"3"是个字符,可以在文本中的任何一个位置,当然,声明b.txt文本中只有一个"3"这个字符
作者: asnahu 时间: 2009-10-8 12:49
问题一次说清楚:
- @echo off & setlocal enabledelayedexpansion
- set m=1
- for /f "delims=" %%i in (a.txt) do (
- for /f "delims=" %%a in (b.txt) do (
- set "foo=%%a"
- set foo=!foo:3=%%i!
- echo/!foo!
- )>>!m!.txt
- set /a m+=1
- )
- exit
复制代码
作者: hackf 时间: 2009-10-8 12:56
原帖由 asnahu 于 2009-10-8 12:49 发表
问题一次说清楚:
@echo off & setlocal enabledelayedexpansion
set m=1
for /f "delims=" %%i in (a.txt) do (
for /f "delims=" %%a in (b.txt) do (
set "foo=%%a"
...
哈哈,谢谢,爱死你了,可惜偶是男的
作者: Seter 时间: 2009-10-8 13:59
可恶...出去一下居然就被抢了TAT
作者: hackf 时间: 2009-10-8 15:24
呜呜,又遇到问题了,1.txt 2.txt 3.txt.....里面的内容回车咋都没了
[ 本帖最后由 hackf 于 2009-10-8 19:32 编辑 ]
作者: asnahu 时间: 2009-10-8 20:14 标题: 回复 11楼 的帖子
能否上传部分文本?以便测试之用。
作者: hackf 时间: 2009-10-8 20:26
非常感谢 asnahu 谢谢您的热心帮助.
[ 本帖最后由 hackf 于 2009-10-8 21:07 编辑 ]
作者: asnahu 时间: 2009-10-8 21:10
如果要保留空行,楼主应该事先说明。更新:
- @echo off & setlocal enabledelayedexpansion
- set m=1
- for /f "delims=" %%i in (a.txt) do (
- for /f "delims=" %%a in ('findstr /n .* b.txt') do (
- set foo=%%a
- set foo=!foo:*:=!
- if not "!foo!"=="3" (echo/!foo!) else (echo/%%i)
- )>>!m!.txt
- set /a m+=1
- )
- pause>nul
复制代码
作者: hackf 时间: 2009-10-11 11:48
原帖由 asnahu 于 2009-10-8 21:10 发表
如果要保留空行,楼主应该事先说明。更新:
@echo off & setlocal enabledelayedexpansion
set m=1
for /f "delims=" %%i in (a.txt) do (
for /f "delims=" %%a in ('findstr /n .* b.txt') do (
...
我试了之后,发觉如果b.txt 中有这个 % 特殊字符,那么就替换不了“3”了,不知哪个高人能解决这问题.
[ 本帖最后由 hackf 于 2009-10-11 11:51 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |