批处理之家's Archiver

namejm 发表于 2008-10-28 22:28

批处理for语句从入门到精通配套练习题

为了配合 [url=http://bbs.bathome.net/thread-2189-1-2.html][color=blue]for语句从入门到精通[/color][/url] 的讲解,特开此专题,对for教程每一部分的讲解都在此处给出一批针对性的练习,方便新手迅速掌握for语句的用法。本练习不追求数量,而是针对for语句的各种技术细节给出针对性的题目,力求覆盖for语句的各个技术要点。

  本练习仅仅提到提纲挈领的作用,要写出更高效更精炼的代码,还需要各位在实际应用中细加揣摩,尝试一题多解。

  为了方便其他人借鉴,请在回帖中的每个代码前指明题号。

  [color=blue]A:for语句的基本用法部分([color=red]请使用单纯的for语句解答本节题目[/color]):[/color]
[quote]

  A1:假设令 set str=I love,bbs;bathome=net,请分别显示出I、love、bbs、bathome和net这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。

  A2:条件同A1,要求最后只显示net这个字符串。目的:了解for语句的执行流程。
[/quote]

jellyhk 发表于 2008-10-29 03:31

A1[code]set str=I love,bbs;bathome.net
for /f "tokens=3-5 delims=,;= " %%a in ("%str%") do echo %%a %%b %%c
pause[/code]===========================================
A2[code]set str=I love,bbs;bathome.net
for /f "tokens=2 delims==" %%a in ("%str%") do echo %%a
pause[/code]

zqy 发表于 2008-10-30 20:22

A1:假设令 set str=I love,bbs;bathome.net,请分别显示出bbs、bathome和cn这三个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。[code]@echo off
set "str=I love,bbs;bathome.net"
for /f "tokens=1-5 delims=,;= " %%a in ("%str%") do echo %%c %%d %%e
pause>nul[/code]A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。[code]@echo off
set "str=I love,bbs;bathome.net"
for /f "tokens=5 delims=,;= " %%a in ("%str%") do echo %%a
pause>nul[/code]

namejm 发表于 2008-11-1 11:47

  楼上两位解答A部分的题目时,都用到了 for 语句的 /f 开关,和出题的初衷不符,希望接下来的答案能用单纯的 for 语句来解答。

loveruixue 发表于 2008-11-1 11:51

set "str=I love,bbs;bathome.net"
for /f "tokens=3-5 delimes=, ; = " %%a in (%str%) do echo %%a %%b %%c


set "str=I love,bbs;bathome.net"
for /f "tokens=2 delimes==" %%a in (%str%) do echo %%a

Batcher 发表于 2008-11-1 18:17

回复 5楼 的帖子

楼主已经说的很清楚了,不允许用for /f

lovelymorning 发表于 2008-11-1 19:28

除了for,能不能用其它的命令,还是只能用 for,连for的参数都不能用????

namejm 发表于 2008-11-9 10:44

  A系列题目是为了训练新手对基本for语句的理解,只能以基本的for语句解题,不要使用/f开关,其他不作限制。

heng520 发表于 2008-11-12 16:58

[color=blue]想不出别的办法了,只能用条件出来杀了。喳喳。。学习中~~[/color]
[color=blue]A1[/color]
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str%) do (
if %%a==bbs echo %%a
if %%a==bathome echo %%a
if %%a==cn echo %%a
)
pause>nul

[color=blue]A2[/color]
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str%) do (
if %%a==cn echo %%a
)
pause>nul

[[i] 本帖最后由 heng520 于 2008-11-12 17:06 编辑 [/i]]

namejm 发表于 2008-11-12 18:40

  A1题目已经更换,难度降低,请大家继续解答。

眸来 发表于 2008-11-13 10:10

A1
@echo off
for %%i in (set str=llove,bbs;bathome.net) do echo %%i
pause
A2
不会

akiraakito 发表于 2008-11-13 13:35

A1:
[Code]
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause>nul

[Result]
I
love
bbs
bathome
cn

[Discussion]
说明for语句将“空格、逗号、分号、等号”视作元素分隔符

A2:
[Code]
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do (set a=%%i)
echo %a%
pause>nul

[Result]
cn

[Discussion]
将%%i的值赋予变量a,在执行for命令时,变量a的值不断被后一个元素所覆盖,最后输出变量a的最终值

[[i] 本帖最后由 akiraakito 于 2008-11-13 13:38 编辑 [/i]]

qpzlsn 发表于 2008-11-22 11:40

我是照葫芦画瓢

看了楼主的第一堂课,我是照葫芦画瓢,不知道对不对!

A1
@echo off
set str=I love,bbs;bathome.net
for %%I in (I love,bbs;bathome.net) do echo %%I
pause>nul

A2
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do (if %%i==cn echo %%i)
pause>nul

fish8077 发表于 2008-11-22 14:56

楼主的这个教程太棒了.  期待更新!!!   
顺便问下,  能不能让我转到我的QQ空间去?

A1:
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do  echo %%i
pause

A2:
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do (if %%i==cn echo %%i)
pause

不知道答案对不对,  思路对不对?

firewolf85 发表于 2008-12-7 18:34

[code]@echo off
set str= I love,bbs;bathome.net
for  %%i in (%str%) do echo %%i
pause>nul[/code]第二题这样可以吗
[code]@echo off
set str= I love,bbs;bathome.net
for  %%i in (%str%) do cls&echo %%i
pause>nul[/code]

[[i] 本帖最后由 firewolf85 于 2008-12-7 18:40 编辑 [/i]]

sanc 发表于 2008-12-9 17:56

@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%,%bathome%) do echo "%%i"
pause
-------------------------------------------------------------------
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%,%bathome%) do if %%i==cn echo "%%i"
pause

[[i] 本帖最后由 sanc 于 2008-12-9 18:01 编辑 [/i]]

jie392617 发表于 2008-12-13 18:47

如果一个人的心

没办法,命中注定,而我又拼不过命。

HooC 发表于 2008-12-26 15:33

值得。

不仅仅是期待更新,更希望有一套完整的教程。

flyinshanghai 发表于 2009-1-5 15:09

回复 1楼 的帖子

楼主的for入门级的教程真是不错,期待着其他内容的添加和跟新....

skuny 发表于 2009-1-9 13:08

@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do (
if not %%i==cn set/p=%%i、<nul
if %%i==cn echo %%i)
pause
-------------------------------------------------------------------
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do if %%i==cn echo %%i
pause

skuny 发表于 2009-1-9 13:15

[quote]原帖由 [i]sanc[/i] 于 2008-12-9 17:56 发表 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=16866&ptid=2336][img]http://www.bathome.net/images/common/back.gif[/img][/url]
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%,%bathome%) do echo "%%i"
pause
-------------------------------------------------------------------
@echo off
set str=I love,bbs;bathome= ... [/quote]

添加%bathhome%为何?????

Areahe 发表于 2009-1-10 11:06

for %a in (        ) do if exist %A=cn echo %A

doshome 发表于 2009-1-11 12:36

仔细看看 一定不错 慢慢体会

p05401144 发表于 2009-1-14 13:06

A1:
@echo off
for /f "delims=,;=  tokens=1-5" %%i in ("I love,bbs;bathome.net") do echo %%i %%j %%k %%l %%m
pause>nul
A2:
@echo off
for /f "delims== tokens=2" %%i in ("I love,bbs;bathome.net") do echo %%i
pause>nul

q787871751 发表于 2009-1-21 02:11

@echo off
set str=I llove,bbs;bathome.net
for %%i in (I llove,bbs;bathome.net) do echo %%i
pause

@echo off
set str=I llove,bbs;bathome.net
for %%i in (cn) do echo %%i
pause

只会这样,其他的不知道了哦.

ccmvhd 发表于 2009-1-22 12:13

A1

@echo off
for /f "tokens=1-5 delims=,;= " %%i in ("i love,bbs;bathome.net") do echo %%i %%j %%k %%l %%m
pause>nul &&exit


A2

@echo off
for /f "tokens=1-2 delims==" %%i in ("i love,bbs;bathome.net") do echo %%j
pause>nul &&exit

skyinheaven 发表于 2009-2-9 17:03

A1
@echo off
set str=I llove,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause



A2
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do if %%i==cn echo %%i
pause
教程写的很好,学到很多东西!

TonyW 发表于 2009-2-16 03:26

[quote]原帖由 [i]sanc[/i] 于 2008-12-9 17:56 发表 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=16866&ptid=2336][img]http://bbs.bathome.net/images/common/back.gif[/img][/url]
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%,%bathome%) do echo "%%i"
pause
-------------------------------------------------------------------
@echo off
set str=I love,bbs;bathome= ... [/quote]


我始终没有弄明白  %bathome%   为什么要加多这个??它起着什么作用??强烈要求当事人或知情人告知!!

PS:非常感谢楼主!!您让我学到了不少东西,即使我现在还无法自由运用!!

leoluo 发表于 2009-2-24 16:50

多加个%bathome%完全是迷惑人的, %bathome%没有值,也没有任何作用...

jackelijie135 发表于 2009-3-12 21:59

@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause

******************

@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do if %%i==cn echo %%i
pause

页: [1] 2 3 4 5 6 7 8

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.