找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 713935|回复: 232

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

[复制链接]
发表于 2008-10-28 22:28:43 | 显示全部楼层 |阅读模式
为了配合 for语句从入门到精通 的讲解,特开此专题,对for教程每一部分的讲解都在此处给出一批针对性的练习,方便新手迅速掌握for语句的用法。本练习不追求数量,而是针对for语句的各种技术细节给出针对性的题目,力求覆盖for语句的各个技术要点。

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

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

  A:for语句的基本用法部分(请使用单纯的for语句解答本节题目):


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

  A2:条件同A1,要求最后只显示net这个字符串。目的:了解for语句的执行流程。
发表于 2008-10-29 03:31:35 | 显示全部楼层
A1
  1. set str=I love,bbs;bathome.net
  2. for /f "tokens=3-5 delims=,;= " %%a in ("%str%") do echo %%a %%b %%c
  3. pause
复制代码
===========================================
A2
  1. set str=I love,bbs;bathome.net
  2. for /f "tokens=2 delims==" %%a in ("%str%") do echo %%a
  3. pause
复制代码
发表于 2008-10-30 20:22:39 | 显示全部楼层
A1:假设令 set str=I love,bbs;bathome.net,请分别显示出bbs、bathome和cn这三个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
  1. @echo off
  2. set "str=I love,bbs;bathome.net"
  3. for /f "tokens=1-5 delims=,;= " %%a in ("%str%") do echo %%c %%d %%e
  4. pause>nul
复制代码
A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。
  1. @echo off
  2. set "str=I love,bbs;bathome.net"
  3. for /f "tokens=5 delims=,;= " %%a in ("%str%") do echo %%a
  4. pause>nul
复制代码
 楼主| 发表于 2008-11-1 11:47:31 | 显示全部楼层
  楼上两位解答A部分的题目时,都用到了 for 语句的 /f 开关,和出题的初衷不符,希望接下来的答案能用单纯的 for 语句来解答。
发表于 2008-11-1 11:51:53 | 显示全部楼层
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
发表于 2008-11-1 18:17:58 | 显示全部楼层

回复 5楼 的帖子

楼主已经说的很清楚了,不允许用for /f
发表于 2008-11-1 19:28:54 | 显示全部楼层
除了for,能不能用其它的命令,还是只能用 for,连for的参数都不能用????
 楼主| 发表于 2008-11-9 10:44:36 | 显示全部楼层
  A系列题目是为了训练新手对基本for语句的理解,只能以基本的for语句解题,不要使用/f开关,其他不作限制。
发表于 2008-11-12 16:58:36 | 显示全部楼层
想不出别的办法了,只能用条件出来杀了。喳喳。。学习中~~
A1
@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

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

[ 本帖最后由 heng520 于 2008-11-12 17:06 编辑 ]
 楼主| 发表于 2008-11-12 18:40:49 | 显示全部楼层
  A1题目已经更换,难度降低,请大家继续解答。
发表于 2008-11-13 10:10:11 | 显示全部楼层
A1
@echo off
for %%i in (set str=llove,bbs;bathome.net) do echo %%i
pause
A2
不会
发表于 2008-11-13 13:35:43 | 显示全部楼层
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的最终值

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

评分

参与人数 4PB +5 技术 +3 收起 理由
BlackP + 1
Hello123World + 1 这是最符合版主出题意图的代码!
SkyPE + 1 答案太精彩了!
wxcute + 5 第一好答案。

查看全部评分

发表于 2008-11-22 11:40:16 | 显示全部楼层

我是照葫芦画瓢

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

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
发表于 2008-11-22 14:56:03 | 显示全部楼层
楼主的这个教程太棒了.  期待更新!!!   
顺便问下,  能不能让我转到我的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

不知道答案对不对,  思路对不对?
发表于 2008-12-7 18:34:23 | 显示全部楼层
  1. @echo off
  2. set str= I love,bbs;bathome.net
  3. for  %%i in (%str%) do echo %%i
  4. pause>nul
复制代码
第二题这样可以吗
  1. @echo off
  2. set str= I love,bbs;bathome.net
  3. for  %%i in (%str%) do cls&echo %%i
  4. pause>nul
复制代码

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

评分

参与人数 1PB +2 收起 理由
wxcute + 2 第一题好

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:47 , Processed in 0.030865 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表