[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理:文本处理综合问题

问题是
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 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

题意不清,什么叫"依次把3替换"?

TOP

原帖由 Seter 于 2009-10-8 11:24 发表
题意不清,什么叫"依次把3替换"?


呵呵,对不起,偶表答的不是很清楚,已重新编辑了

[ 本帖最后由 hackf 于 2009-10-8 11:55 编辑 ]

TOP

继续提问
53,35,535这样的替换吗?
若替换,字符5仍然保存么

[ 本帖最后由 Seter 于 2009-10-8 12:09 编辑 ]

TOP

原帖由 Seter 于 2009-10-8 12:07 发表
继续提问
53,35,535这样的替换吗?
若替换,字符5仍然保存么


谢谢,您把问题分析得非常详细,再次感谢您的关注,那个5不保存,当然偶也很想知道如果5仍然保存的话,要怎么写呢?

[ 本帖最后由 hackf 于 2009-10-8 12:28 编辑 ]

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. set n=0
  3. set m=1
  4. for /f "delims=" %%i in (a.txt) do (
  5.         for /f "delims=" %%a in (b.txt) do (
  6.                 set /a n+=1
  7.                 if not !n! equ 3 (echo/%%~a) else (echo/%%~i)
  8.         )>>!m!.txt
  9.         set n=0
  10.         set /a m+=1
  11. )
  12. exit
复制代码

[ 本帖最后由 asnahu 于 2009-10-8 12:39 编辑 ]

TOP

原帖由 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"这个字符
偶数批处理之家中的小学生

TOP

问题一次说清楚:

  1. @echo off & setlocal enabledelayedexpansion
  2. set m=1
  3. for /f "delims=" %%i in (a.txt) do (
  4.         for /f "delims=" %%a in (b.txt) do (
  5.                 set "foo=%%a"
  6.                 set foo=!foo:3=%%i!
  7.                 echo/!foo!
  8.         )>>!m!.txt
  9.         set /a m+=1
  10. )
  11. exit
复制代码

TOP

原帖由 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"
            ...


哈哈,谢谢,爱死你了,可惜偶是男的
偶数批处理之家中的小学生

TOP

可恶...出去一下居然就被抢了TAT

TOP

呜呜,又遇到问题了,1.txt 2.txt 3.txt.....里面的内容回车咋都没了

[ 本帖最后由 hackf 于 2009-10-8 19:32 编辑 ]
偶数批处理之家中的小学生

TOP

回复 11楼 的帖子

能否上传部分文本?以便测试之用。

TOP

非常感谢 asnahu  谢谢您的热心帮助.

[ 本帖最后由 hackf 于 2009-10-8 21:07 编辑 ]
偶数批处理之家中的小学生

TOP

如果要保留空行,楼主应该事先说明。更新:

  1. @echo off & setlocal enabledelayedexpansion
  2. set m=1
  3. for /f "delims=" %%i in (a.txt) do (
  4.         for /f "delims=" %%a in ('findstr /n .*  b.txt') do (
  5.                 set foo=%%a
  6.                 set foo=!foo:*:=!
  7.                 if not "!foo!"=="3" (echo/!foo!) else (echo/%%i)
  8.         )>>!m!.txt
  9.         set /a m+=1
  10. )
  11. pause>nul
复制代码
1

评分人数

TOP

原帖由 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 编辑 ]
偶数批处理之家中的小学生

TOP

返回列表