Board logo

标题: 批处理修改文本高级问题求助 [打印本页]

作者: xuehaiwuya     时间: 2007-10-27 14:21    标题: 批处理修改文本高级问题求助

A.txt
abcd.dll
cdfg.exe
dfgrt.dll
fghdghkl.dll
dfegerhgrehgf.exe
...

B.txt
I !Love you ("c:\5.txt")
I Love you ("c:\6.txt")
I Love you ("c:\7.txt")

如何循环生成B1.txt,B2.txt,B3.txt,...
其中B1.txt
I !Love you ("c:\5.txt")
I Love you ("c:\abcd.dll")
I Love you ("c:\7.txt")
B2.txt
I !Love you ("c:\5.txt")
I Love you ("c:\cdfg.exe")
I Love you ("c:\7.txt")
B3.txt
I !Love you ("c:\5.txt")
I Love you ("c:\dfgrt.dll")
I Love you ("c:\7.txt")
....

能用批处理执行这个过程吗?
暂时在本论坛没看到可实现的BAT代码
请高手帮忙实现!
作者: vkill     时间: 2007-10-27 19:56
没有发现什么规律
作者: sinbao     时间: 2007-10-27 20:50

@echo off
setlocal enabledelayedexpansion
set /a count=0
for /f "delims=" %%i in (a.txt) do (

        set /a "count+=1"
        set file=B!count!.txt

        rem echo !count!
        echo I ^^!Love you ^("c:\5.txt"^)>!file!
        echo I Love you ^("%%i"^)>>!file!
        echo I Love you ^("c:\7.txt"^)>>!file!
)
endlocal
goto :EOF

作者: xuehaiwuya     时间: 2007-10-28 02:23
谢谢十楼
作者: xuehaiwuya     时间: 2007-10-28 12:42


  Quote:
Originally posted by sinbao at 2007-10-27 08:50 PM:
[code]@echo off
setlocal enabledelayedexpansion
set /a count=0
for /f "delims=" %%i in (a.txt) do (

        set /a "count+=1"
        set file=B!count!.txt

        rem echo !count!
        echo  ...

如果A.txt内容很多的话
这样写BAT很累的
        echo I ^^!Love you ^("c:\5.txt"^)>!file!
        echo I Love you ^("%%i"^)>>!file!
        echo I Love you ^("c:\7.txt"^)>>!file!

最好能从B.txt中调用文件内容
能用FOR循环解决吗
有谁能改进代码啊

换句话说
是如何在写一个简单的介质BAT生成十楼所写的BAT

[ Last edited by xuehaiwuya on 2007-10-28 at 12:52 PM ]
作者: fastslz     时间: 2007-10-28 13:39
SED单行脚本快速参考
http://sed.sourceforge.net/sed1line_zh-CN.html
作者: lxmxn     时间: 2007-10-28 18:25
B.txt 中需要修改的是哪一行呢?
作者: xuehaiwuya     时间: 2007-10-28 21:27
B.txt
I !Love you ("c:\5.txt")
I Love you ("c:\6.txt")
I Love you ("c:\7.txt")

要修改c:\6.txt
作者: sinbao     时间: 2007-10-28 22:09
首先你要分清楚需求变化的是哪一部分,然后才能在代码上把那一部分反映出来.
作者: xuehaiwuya     时间: 2007-10-28 23:08


  Quote:
Originally posted by sinbao at 2007-10-28 10:09 PM:
首先你要分清楚需求变化的是哪一部分,然后才能在代码上把那一部分反映出来.

顶楼写得很清楚
而且你实现了
但是
你的这个方法假若B.TXT很大的时候很累
毕竟B.TXT是现成的
所写的BAT中的B.TXT部分应当可以循环调用B.TXT来写入那样就可以节省操作的时间
作者: sinbao     时间: 2007-10-28 23:40
你的b.txt文件里面有太多的特殊字符,用循环很麻烦或者不可能,建议你用sed或者perl来做这些事情...因为dos毕竟不是搞文本解析的...
作者: xuehaiwuya     时间: 2007-10-28 23:57
我想可能的
至少理论上是可能的
问题是怎么来实现