批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

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

为了配合 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语句的执行流程。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

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
复制代码
本人已死!不用联系!~
要联系下来联系!~~

TOP

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
复制代码
砂石下的泉水,掘得越深,泉水会越清吗?

TOP

  楼上两位解答A部分的题目时,都用到了 for 语句的 /f 开关,和出题的初衷不符,希望接下来的答案能用单纯的 for 语句来解答。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

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

TOP

回复 5楼 的帖子

楼主已经说的很清楚了,不允许用for /f
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,不用找我要支付宝或微信账号。如果一定要给,请到微信群给大家发红吧。

TOP

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

TOP

  A系列题目是为了训练新手对基本for语句的理解,只能以基本的for语句解题,不要使用/f开关,其他不作限制。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

想不出别的办法了,只能用条件出来杀了。喳喳。。学习中~~
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 编辑 ]

TOP

  A1题目已经更换,难度降低,请大家继续解答。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

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

TOP

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 编辑 ]
4

评分人数

TOP

我是照葫芦画瓢

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

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

TOP

楼主的这个教程太棒了.  期待更新!!!   
顺便问下,  能不能让我转到我的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

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

TOP

  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 编辑 ]
1

评分人数

TOP

返回列表