Board logo

标题: 批处理for语句从入门到精通配套练习题 [打印本页]

作者: namejm    时间: 2008-10-28 22:28     标题: 批处理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语句的执行流程。

作者: jellyhk    时间: 2008-10-29 03:31

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
复制代码

作者: zqy    时间: 2008-10-30 20:22

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
复制代码

作者: 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

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

[ 本帖最后由 akiraakito 于 2008-11-13 13:38 编辑 ]
作者: 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

  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 编辑 ]
作者: 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

[ 本帖最后由 sanc 于 2008-12-9 18:01 编辑 ]
作者: 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

原帖由 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= ...


添加%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

原帖由 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= ...



我始终没有弄明白  %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
作者: keen    时间: 2009-3-13 23:50

A1:
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for /f "tokens=1-5 delims=,;= " %%i in ("%str%") do echo %%i  %%j  %%k  %%l  %%m
  4. pause
复制代码
A2:
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for /f "tokens=1-5 delims=,;= " %%i in ("%str%") do echo %%m
  4. pause
复制代码

  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for /f "tokens=5 delims=,;= " %%i in ("%str%") do echo %%i
  4. pause
复制代码

[ 本帖最后由 keen 于 2009-3-13 23:53 编辑 ]
作者: keen    时间: 2009-3-13 23:58

没看清题意,我用 参数 /f 了。学习中……
作者: keen    时间: 2009-3-14 00:11

12楼写的不错,为什么没给加PB?
咱们论坛,除了巡查能给加PB,其他人普通会员能不能给写的好的加PB?
作者: keen    时间: 2009-3-14 00:17

仿照12楼:
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i &echo.
  4. pause
  5. @echo off
  6. set str=I love,bbs;bathome.net
  7. for %%i in (%str%) do (set a=%%i)
  8. echo %a%
  9. pause
复制代码

作者: 骚鸡    时间: 2009-3-14 14:16

A1
A2
都不会,不过等下可能会了,(谁要你在“for语句从入门到精通”里面说到第2点的时候就说来这做题啊?至少我学了第2点是做不出来题。。。 )
作者: Batcher    时间: 2009-3-14 15:02     标题: 回复 33楼 的帖子

能,请查看:http://bbs.bathome.net/thread-1869-1-1.html
作者: wangantao    时间: 2009-3-15 00:08

A1:
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str%) do echo %%a
作者: wangantao    时间: 2009-3-15 00:19

A2:
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str%) do (
        if %%a==cn echo %%a
)
作者: wangantao    时间: 2009-3-15 00:26     标题: 回复 12楼 的帖子

A2问题给出的答复独特,很好。
作者: jwq    时间: 2009-3-15 13:45     标题: FOR的两段代码

FOR的两段代码,怎么结果不一样呢?朋友们帮看下,谢谢了
作者: jwq    时间: 2009-3-15 13:57     标题: FOR的两段代码

前面发的貌似解决了,打扰了
作者: Batcher    时间: 2009-3-15 14:11     标题: 回复 40楼 的帖子

直接贴代码不是很好吗?为啥非要贴附件?
作者: laywhx    时间: 2009-3-15 15:46

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

A2
@echo off
set str=I love,bbs;bathome.net
for %%l in (%str%) do cls&echo %%l
pause
(如果知识答题的话这个应该算是最佳答案了)

@echo off
set str=I love,bbs;bathome.net
for %%l in (%str%) do if %%l==cn echo %%l
pause
(这个的可扩展性好)
作者: flyingsand    时间: 2009-3-18 16:04

A1
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i
  4. pause
复制代码

A2
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str%) do cls& echo %%i
  4. pause
复制代码

作者: rogoo    时间: 2009-3-22 15:45

for /f "delims=,;=  tokens=1-5" %%i in ("%str%") do (echo %%i %%j %%k %%l %%m)
pause
作者: kfwangxiaoqiang    时间: 2009-4-3 09:58

第一个
@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 (set var=%%I)
echo %var%
pause>nul
作者: limpy    时间: 2009-4-3 12:36

A:代码:
@echo off
set str="I love,bbs;bathome.net"
for /f "delims=,;= tokens=1-5"  %%i in (%str%) do (echo %%i %%j %%k %%l %%m)
pause

B:代码:
@echo off
set str="I love,bbs;bathhome=cn"
for /f "delims== tokens=2" %%i in (%str%) do (echo %%i)
pause
作者: syt0529    时间: 2009-4-5 15:18

看了一下,版主的问题问的好,第一题不说了,比较简单,用默认的分隔符就行了,这里说一下第二题,我觉得最贴题的就是用cls和set来处理,因为楼主的要求是要理解for的运行过程,如果用if来判断的话有点勉强。鉴定完毕.
作者: rboert    时间: 2009-4-5 15:44

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

@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause
A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。

@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do cls& echo %%i
pause
作者: myeanngg    时间: 2009-4-11 18:13

set str=I love,bbs;bathome.net
for %%i in (str) do ( if i==cn do  echo %%i)
作者: aoelus    时间: 2009-5-2 07:39

刚开始学,感谢楼主编写的for教程,这是我到目前为止见过的最通俗易懂的了
第一题
-----------------------------------------------------
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for  %%i in (%str%) do  echo %%i
  4. pause
复制代码
第二题
-------------------------------------------------------------------------
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for  %%i in (%str%) do cls & echo %%i
  4. pause
复制代码

作者: wxlh2002    时间: 2009-5-18 23:48     标题: 下面这个练习那位高手能给出正确的答案

  练习:用for语句建立test1.txt、test2.txt和test3.txt三个文本文件。
作者: seaseasea3    时间: 2009-5-23 11:22

  1. @echo off
  2. for /f "tokens=3,4,5,6,7 delims=,=; " %%i in ("set str=I love,bbs;bathome.net") do (
  3. echo %%i
  4. echo %%j
  5. echo %%k
  6. echo %%l
  7. echo %%m
  8. )
  9. pause
复制代码

作者: wgx1688    时间: 2009-5-31 18:19     标题: 回复 52楼 的帖子

for %%a in (text1.txt,text2.txt,text3.txt) do md %%a
作者: amwgjhpl    时间: 2009-6-7 03:07

@echo off
for %%I in (I love,bbs;bathome.net) do echo %%I
pause
作者: fyb198351    时间: 2009-6-10 00:36

A
  1. set str=l love,bbs;bathome.net
  2. for %%a in (%str%) do echo %%a
复制代码
B
[code}
set str=l love,bbs;bathome.net
for /f "tokens=2 delims==" %%a in ("%str%") do echo %%a
[/code]
作者: rwxyxy    时间: 2009-6-10 13:06

A1:假设令 set str=I love,bbs;bathome.net,请分别显示出I、love、bbs、bathome和cn这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%a in (%str%) do echo %%a
  4. pause>nul
复制代码
A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%a in (%str%) do ( if "%%a"=="cn" echo %%a )
  4. pause>nul
复制代码

作者: zljzsmzzx    时间: 2009-6-10 14:25     标题: 回复 52楼 的帖子

楼主的问题都有那么多人回答了,大家的答案都大同小异。所以我也不重复回答了。下面这个是52楼朋友的答案。
如果只是单纯的用FOR而不能加参数的话可以这样:
  1. @for %%a in (1 2 3) do (cd.>test%%a.txt)
复制代码
如果可以用参数的话用/l来处理工作量比较大的很好用。
  1. @for /l %%a in (1,1,3) do (cd.>test%%a.txt)
复制代码

(另外想请问一下,为什么我在“原创代码”版块里不能发新帖呢?是我“等级”太低了还是?我是昨天注册的。)

[ 本帖最后由 zljzsmzzx 于 2009-6-10 14:31 编辑 ]
作者: keen    时间: 2009-6-14 14:42     标题: 回复 59楼 的帖子

请学会使用code将代码括起来
http://www.bathome.net/faq.php?action=message&id=18
作者: wuqi312    时间: 2009-6-18 20:40     标题: 回复 12楼 的帖子

for %%i in (%str%) do (set a=%%i)
覆盖这个想法真不错啊!
我只想到了个if啊。
高手哦
作者: wwtao    时间: 2009-6-23 11:03

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

我是新手弄错了别骂,谢谢,请多指教
作者: johnson3333    时间: 2009-6-27 10:47

  1. ::A1:假设令 set str=I love,bbs;bathome.net,请分别显示出I、love、bbs、bathome和cn这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
  2. @echo off
  3. (
  4.     for /f "tokens=1,2,3,4,5 delims=,;= " %%a in ("I love,bbs;bathome.net") do (
  5.     echo;%%a
  6.     echo;%%b
  7.     echo;%%c
  8.     echo;%%d
  9.     echo;%%e
  10.     )
  11. )
  12. pause
  13. ::A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。
  14. @echo off
  15. (
  16.     for /f "tokens=1,2,3,4,5 delims=,;= " %%a in ("I love,bbs;bathome.net") do (
  17.     echo;%%e
  18.     )
  19. )
  20. pause
复制代码

作者: yinsigan    时间: 2009-7-6 17:07

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

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

第一题:
@echo off
set str=I love,bbs;bathome.net
for %%i in ("%str%") do set  a=%i:I%
echo %a%
for %%i in ("%str%") do set  b=%str:~2,4%
echo %b%
for %%i in ("%str%") do set  c=%i:bbs%
echo %c%
for %%i in ("%str%") do set  d=%i:bathome%
echo %d%
for %%i in ("%str%") do set  e=%str:~-2%

echo %e%

pause

set str=I love,bbs;bathome.net
for /f "todens=1,2,3,4,5 delims=,;= " %%i in ("%str%") do (
echo %%i
echo %%j
echo %%k
echo %%l
echo %%m
)
pause


第二种解法:

set str=I love,bbs;bathome.net
for /f "delims= " %%i in ("%str%") do echo %%i
for /f "tokens=1 delims=," %%i in ("%str%") do for /f "tokens=2 delims= " %%j in ("%%i") do echo %%j
for /f "tokens=2 delims=," %%i in ("%str%") do for /f "delims=;" %%j in ("%%i") do echo %%j
for /f "tokens=2 delims=;" %%i in ("%str%") do for /f "tokens=1 delims==" %%j in ("%%i") do echo %%j
for /f "tokens=2 delims==" %%i in ("%str%") do echo %%i
pause
作者: yinsigan    时间: 2009-7-6 17:12

for /f "tokens=1,2,3,4,5 delims=,;= " %%a in ("I love,bbs;bathome.net") do (
    echo %%a & echo %%b & echo %%c & echo %%d & echo %%e
作者: keen    时间: 2009-7-6 19:10     标题: 回复 65楼 的帖子

你的代码有错误,你在写好代码后,都不测试一下吗?
作者: yinsigan    时间: 2009-7-6 23:23

不好意思,我测试后可能粘贴的时候贴少
新手,多多指教
作者: eneir    时间: 2009-7-9 02:24     标题: 标准答案

A1:
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause>nul
A2:
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do set str=%%i
echo %str%
pause>nul
作者: vsbat    时间: 2009-7-12 14:51

A1:
  1. @echo off
  2. set str=i love,bbs;bathome.net,
  3. for %%i in (%str%) do echo %%i
  4. pause>nul
复制代码
A2:
  1. @echo off
  2. set str=i love,bbs;bathome.net,
  3. for %%i in (%str%) do if "%%i"=="cn" echo %%i
  4. pause>nul
复制代码

作者: vsbat    时间: 2009-7-12 15:07     标题: 回复 62楼 的帖子

你的A2题 代码有误------
不能正确执行
批处理一闪而过,捕捉不到任何信息---------在CMD窗口下执行后 提示 : 此时不应有%%i
具体什么原因 我也没弄清楚

[ 本帖最后由 vsbat 于 2009-7-12 15:10 编辑 ]
作者: keen    时间: 2009-7-12 17:04     标题: 回复 70楼 的帖子

你的代码跟他的基本一样,难道你自己没看出他的那儿跟你的不一样嘛?

62楼的代码在最后显示的时候在echo前面加了个冒号,导致一闪而过。
作者: loop3231262    时间: 2009-7-16 02:40

原A1题
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str:~7%) do echo %%a
pause

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

测试OK

A2题
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str:~-2%) do echo %%a
pause


学习过程中有很多以为,楼主可以告诉个Q吗?
作者: loop3231262    时间: 2009-7-16 02:55     标题: 回复 70楼 的帖子

原因是他的命令里多了几个:  导致严重语法错误。所以黑光一闪而过。无法运行

至于在dos下为什么显示 此时不应有%%
因为在dos参数不使用%% 而是单%
作者: loop3231262    时间: 2009-7-16 03:00

我想楼主的主要意思是让我们明白
for命令的运行机理。是一个一个来的……。
@echo off
set str=I love,bbs;bathome.net
for %%a in %str% echo %%a
pause
第三行中,str=I love,bbs;batehome=cn
由于for命令默认分隔,因此实际上命令运行时是  
for %%a in I echo %%a
for %%a in love echo %%a
for %%a in bbs echo %%a
for %%a in bathome echo %%a
for %%a in cn echo %%a
这五句。
理解这一点,题目就好做了
作者: huangweidong    时间: 2009-7-16 14:29

看一下了。到底是什么东西了
作者: zysheng110    时间: 2009-7-16 15:15     标题: 请楼主审批……

@echo off
set str=I love,bbs;bathome.net
for %%a in (%str%) do echo %%a
echo 默认用(空格,逗号,分号,等号)作为元素分隔符
echo ------------------------------------------
echo ---------------------------------------
echo ------------------------------------
echo ---------------------------------
echo 第二题
pause
for %%a in (%str%) do (if %%a==cn echo %%a)
echo 根据元素所提取的过程发现%%a变量的变化!
pause>nul

[ 本帖最后由 zysheng110 于 2009-7-16 15:18 编辑 ]
作者: msconfig    时间: 2009-7-23 17:53

A1
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause
A2
还不会做,先看看别人的再说
作者: msconfig    时间: 2009-7-23 18:09

参考了别人的,不知道这样算不算合格
A2
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do if %%i==cn echo cn
pause>nul
作者: msconfig    时间: 2009-7-23 18:14     标题: 回复 71楼 的帖子

好像在cn后面还加了个逗号吧,我去掉逗号后,好像没有cn的字样出来,就一个嘿板在那。
作者: keen    时间: 2009-7-23 18:59     标题: 回复 79楼 的帖子

你在说那个楼层的代码?
逗号也是for语句中默认的分隔符。
作者: benz1979    时间: 2009-7-26 14:44

A1:假设令 set str=I love,bbs;bathome.net,请分别显示出I、love、bbs、bathome和cn这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
set  “str=I love,bbs;bathome.net”
for /f "tokens=1-5 delims=,;= " %%i in (%str%) do echo %%i %%j %%k %%m %%n

A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程
set  “str=I love,bbs;bathome.net”
for /f "tokens=2 delims== " %%i in (%str%) do echo %%i
作者: lee    时间: 2009-7-26 22:31

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

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


新手。请多指教!!
作者: houenxun    时间: 2009-7-29 08:46     标题: 回复 1楼 的帖子

感谢分享,顶!!!!!!!!!!!!!!
作者: dazheng    时间: 2009-7-29 10:11     标题: 回答

A1
@echo off
set str=I love,bbs;bathome.net
for /f "tokens=1-5 delims=,;=" %%a in ("%str%") do @echo %%a %%b %%c %%d %%e
pause
A2
@echo off
set str=I love,bbs;bathome.net
for /f "tokens=2 delims==" %%a in ("%str%") do @echo %%a
pause
作者: zhaicheng    时间: 2009-7-30 18:19

pause>nul 有什么实际作用吗
作者: wxcute    时间: 2009-7-30 18:53     标题: 回复 85楼 的帖子

有阿,作用就是暂停而不显示提示文字。
作者: zlgeng    时间: 2009-7-31 01:54     标题: 请老师检查

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

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

  A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。
@echo off
set str=I love,bbs;bathome.net
for /f "tokens=2 delims==" %%i in ("%str%") do echo %%i
pause
作者: nopr    时间: 2009-8-1 17:16     标题: 我来迟了

A1
  1. @echo off
  2. set str=i love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i
  4. pause > nul
复制代码
A2
  1. @echo off
  2. set str=i love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i > a.txt
  4. type a.txt & del a.txt
  5. pause > nul
复制代码

[ 本帖最后由 nopr 于 2009-8-1 17:34 编辑 ]
作者: hs4814    时间: 2009-8-8 16:44

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

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

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


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

请老师检查
作者: zlgeng    时间: 2009-8-10 12:49

  1. @echo off
  2.      set str=i love,bbs;bathome.net,
  3.     for %%i in (%str%) do echo %%i
  4.      pause
  5.    
复制代码

作者: zhuzizzq    时间: 2009-8-15 04:20

  1. @echo off
  2. set str=i love bbs bathome.net
  3. for %%a in (%str%) do echo %%a
  4. pause
复制代码

作者: zhuzizzq    时间: 2009-8-15 04:21

  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%a in (%str%) do echo %%a
  4. pause
复制代码

作者: dthaoa1    时间: 2009-8-23 21:47

为什么我没看到东西?
作者: lianfayong    时间: 2009-9-17 17:17

第一题
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i
  4. pause
复制代码


第二题  偷看人家答案的,我想了很久没想出来,脑瓜子不灵活 -  -||
  1. set str=I love,bbs;bathome.net
  2. for %%i in (%str%) do cls&%%i      /for %%i in (%str%) do (set a=%%i)   enter echo %a%
  3. pause
复制代码

[ 本帖最后由 lianfayong 于 2009-9-18 15:26 编辑 ]
作者: smallbaby    时间: 2009-9-18 14:22

A2
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. echo 看看:
  4. for %%i in (%str%) do if %%i==cn echo %%i
  5. pause
复制代码
A1
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. echo 看看:
  4. for %%i in (%str%) do echo %%i
  5. pause
复制代码

作者: jiasongfu    时间: 2009-9-29 17:19     标题: 第二题可以这样写吗

  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str:~-2%) do echo %%i
  4. pause
复制代码

作者: qwe23068    时间: 2009-10-11 20:00     标题: 回复 1楼 的帖子

A1:
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i
  4. pause
复制代码
A2
  1. @echo off
  2. set "str=I love,bbs;bathome.net"
  3. for /f "delims=,;= tokens=4" %%i in ("%str%") do echo %%i
  4. pause
复制代码

作者: wsjxwj    时间: 2009-10-17 10:52

A1的:
  1. echo off
  2. set str=i love,bbs;bathome.net  
  3. for %%i in (i love,bbs;bathome.net ) do echo %%i
  4. pause > nul
复制代码
A2的还在调试,呵呵,我是新手 还望LZ多多指教
作者: wsjxwj    时间: 2009-10-17 10:55

刚刚那个A1的发错了,重发
  1. echo off
  2. set str=i love,bbs;bathome.net  
  3. for %%i in (%str%) do echo %%i
  4. pause > nul
复制代码

作者: wsjxwj    时间: 2009-10-17 11:13

A2:
  1. set str=I love,bbs;bathome.net
  2. for %%a in (%str%) do  if %%a==cn echo %%a
  3. pause
复制代码

作者: ghostwar    时间: 2009-10-24 06:39

  1. @echo off
  2.    for %%a-e in( i love bbs bathome.net ) do echo %%a-e
  3.    pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2