中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 19:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 又一道出给新人的文本输出题(加分题): 查看 1,529 回复 5
楼 主 又一道出给新人的文本输出题(加分题): 发表于 2008-05-21 15:49 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
有a.txt内容如下:

; 1 cn-dos
; 2 cn-dos
; 3 cn-dos
; 4 cn-dos
; 5 cn-dos
; 6 cn-dos
; 7 cn-dos
; 8 cn-dos
; 9 cn-dos
; 10 cn-dos
; 11 cn-dos
; 12 cn-dos
; 13 cn-dos
; 14 cn-dos
; 15 cn-dos
; 16 cn-dos
; 17 cn-dos
; 18 cn-dos
; 19 cn-dos
; 20 cn-dos

要求通过批处理输出为:

; 1 cn-dos
; 2 cn-dos
; 3 cn-dos
; 4 cn-dos
; 5 wwww.cn-dos
; 6 wwww.cn-dos
; 7 wwww.cn-dos
; 8 wwww.cn-dos
; 9 wwww.cn-dos
; 10 wwww.cn-dos
; 11 wwww.cn-dos
; 12 wwww.cn-dos
; 13 wwww.cn-dos
; 14 wwww.cn-dos
; 15 wwww.cn-dos
; 16 cn-dos
; 17 cn-dos
; 18 cn-dos
; 19 cn-dos
; 20 cn-dos

第一个做出来的新人我加5分。

[ Last edited by zw19750516 on 2008-5-21 at 04:02 PM ]
批处理之家新域名:www.bathome.net
2 发表于 2008-05-21 16:03 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
@echo off&setlocal enabledelayedexpansion
for /f "eol= delims=" %%a in (a.txt) do (
set str=%%a
set/a n+=1
if !n! geq 5 if !n! leq 15 set str=!str:cn-dos=wwww.cn-dos!
echo !str!
)
pause


感觉这题只难在 不知道for会默认忽略以分号开头的行。。。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +1 2008-05-21 16:28
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
3 发表于 2008-05-21 16:13 ·  中国 北京 联通
社区乞丐
积分 -61
发帖 37
注册 2008-04-19 17:10
18年会员
UID 116329
性别 男
状态 离线

@echo off&setlocal
for /f "eol= tokens=1,2*" %%a in (a.txt) do (
if %%b geq 5 (if %%b leq 15 (echo/%%a %%b www.%%c) else echo/%%a %%b %%c) else echo/%%a %%b %%c
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +5 2008-05-21 16:28
4 发表于 2008-05-21 16:38 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by pusofalse at 2008-5-21 16:03:
@echo off&setlocal enabledelayedexpansion
for /f "eol= delims=" %%a in (a.txt) do (
set str=%%a
set/a n+=1
if !n! geq 5 if !n! leq 15 set str=!str:cn-dos=wwww.cn-dos!
echo !s ...

兄弟跟了我们这么贴,所以这道题对你来说是比较容易的,所以我只加了1分。
PS:兄弟可以去做一下那道排序的题目。

[ Last edited by zw19750516 on 2008-5-21 at 04:39 PM ]
批处理之家新域名:www.bathome.net
5 公布我的答案: 发表于 2008-05-21 16:46 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@echo off&setlocal enabledelayedexpansion
for /f "delims=;" %%i in (a.txt) do (
set a=%%i&set /a n+=1
if !n! geq 5 if !n! leq 15 set a=!a:cn=www.cn!
echo ; !a!
)
pause>nul

其实这道题目的就是让新手了解for默认会忽略以;号打头的行,也仅难在于此了。
批处理之家新域名:www.bathome.net
6 发表于 2008-05-21 16:48 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-21 04:38 PM:

兄弟跟了我们这么贴,所以这道题对你来说是比较容易的,所以我只加了1分。
PS:兄弟可以去做一下那道排序的题目。

[ Last edited by zw19750516 on 2008-5-21 at 04:39 PM ]


我的目的不是为了加分~ ^_^ 以前这种题目对我来说简直是太难,不过来到CN-DOS之后,我也感觉自己成长了呐! 多谢各位前辈。。。
排序题 正在思考中~ 果然排序对我来说还挺难的~
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
论坛跳转: