中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-30 17:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理修改文本高级问题求助 查看 979 回复 11
楼 主 批处理修改文本高级问题求助 发表于 2007-10-27 14:21 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
18年会员
UID 100924
性别 男
状态 离线
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代码
请高手帮忙实现!
2 发表于 2007-10-27 19:56 ·  中国 甘肃 天水 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
没有发现什么规律
3 发表于 2007-10-27 20:50 ·  中国 上海 长宁区 电信
初级用户
★★
积分 184
发帖 73
注册 2007-05-24 18:06
19年会员
UID 89185
性别 男
状态 离线
@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
4 发表于 2007-10-28 02:23 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
18年会员
UID 100924
性别 男
状态 离线
谢谢十楼
5 发表于 2007-10-28 12:42 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
18年会员
UID 100924
性别 男
状态 离线
Originally posted by sinbao at 2007-10-27 08:50 PM:
@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 ]
6 发表于 2007-10-28 13:39 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
第一高手 第二高手

7 发表于 2007-10-28 18:25 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
B.txt 中需要修改的是哪一行呢?
8 发表于 2007-10-28 21:27 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
18年会员
UID 100924
性别 男
状态 离线
B.txt
I !Love you ("c:\5.txt")
I Love you ("c:\6.txt")
I Love you ("c:\7.txt")

要修改c:\6.txt
9 发表于 2007-10-28 22:09 ·  中国 上海 闵行区 电信
初级用户
★★
积分 184
发帖 73
注册 2007-05-24 18:06
19年会员
UID 89185
性别 男
状态 离线
首先你要分清楚需求变化的是哪一部分,然后才能在代码上把那一部分反映出来.
10 发表于 2007-10-28 23:08 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
18年会员
UID 100924
性别 男
状态 离线
Originally posted by sinbao at 2007-10-28 10:09 PM:
首先你要分清楚需求变化的是哪一部分,然后才能在代码上把那一部分反映出来.


顶楼写得很清楚
而且你实现了
但是
你的这个方法假若B.TXT很大的时候很累
毕竟B.TXT是现成的
所写的BAT中的B.TXT部分应当可以循环调用B.TXT来写入那样就可以节省操作的时间
11 发表于 2007-10-28 23:40 ·  中国 上海 闵行区 电信
初级用户
★★
积分 184
发帖 73
注册 2007-05-24 18:06
19年会员
UID 89185
性别 男
状态 离线
你的b.txt文件里面有太多的特殊字符,用循环很麻烦或者不可能,建议你用sed或者perl来做这些事情...因为dos毕竟不是搞文本解析的...
12 发表于 2007-10-28 23:57 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
18年会员
UID 100924
性别 男
状态 离线
我想可能的
至少理论上是可能的
问题是怎么来实现
论坛跳转: