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

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

[复制链接]
发表于 2010-5-27 18:39:53 | 显示全部楼层

回复 2楼 的帖子

你在哪层啊,我在十八层啊,以后常联系啊
发表于 2010-6-30 11:38:41 | 显示全部楼层

A1 A2 答案

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

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

答案:
  1. @echo off
  2. echo A1:
  3. set str=I,love,bbs;bathome.net
  4. for %%I in (%str%) do echo %%I
  5. echo A2:
  6. @echo off
  7. set str=I,love,bbs;bathome;net
  8. for %%I in (%str%) do echo %%I
  9. pause
复制代码
发表于 2010-7-13 13:09:48 | 显示全部楼层

答案的总结

a1:答案很简单:一句话:
for %%i in ("I love,bbs;bathome.net") do %%I
不再多说了

对于a2,观看了各位大侠的帖子,总结有下列几种:
第一种:

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


这种是利用清屏来实现最后的输出。但不知清屏对内存的占用大不大。语言简洁

第二种:

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

这种是利用变量赋值来实现最后的输出。对内存占用不是很大。语言有点复杂

第三种:

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


这种是第二种的扩展。第二种是用内存来存取内容,第三种则是用硬盘来存取。语言复杂
发表于 2010-7-18 17:22:41 | 显示全部楼层
==========================================================
A1:假设令 set str=I love,bbs;bathome.net,请分别显示出I、love、bbs、bathome和cn这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
(cn怎么显示.....很费解啊这个事情....)
答:
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str:~0,-4%) do echo %%i
  4. for %%i in (%str:~-3%) do echo %%i
  5. pause
复制代码
cn实在搞不出来......我都没看到有c
==========================================================
A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。
答:
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str:~-3%) do echo %%i
  4. pause
复制代码
==========================================================
End;
发表于 2010-8-9 02:01:09 | 显示全部楼层
Q1:
  1. @echo off
  2. set str=i love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i
  4. pause
复制代码
Q2:
  1. @echo off
  2. set str=i love,bbs;bathome.net
  3. set c=net
  4. for %%i in (%str%) do echo if %%i=net echo %%i
  5. pause
复制代码
第二个问题在处理清理前面的字符串时,存在困难,没能只用for语句解决,希望前辈指正!
发表于 2010-8-31 10:58:05 | 显示全部楼层
A1
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i (%str%) do echo %%i
复制代码
A2 实现不了
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i (%str%) do if exist "net" echo %%i
复制代码
另求149楼两段代码解释,完美实现了
  1. @echo off
  2. set str=I love,bbs;bathome.net
  3. for %%i in (%str:~0,-4%) do echo %%i
  4. for %%i in (%str:~-3%) do echo %%i
  5. pause
复制代码
发表于 2010-9-2 11:12:18 | 显示全部楼层
I love,bbs;bathome.net
中bathome.net 为一个字符 而题目要求逐个显示单词
大家都是
  1. @echo off
  2. set str=i love,bbs;bathome.net
  3. for %%i in (%str%) do echo %%i
  4. pause>nul
  5. 显示结果是:
  6. i
  7. love
  8. bbs
  9. bathome.net
复制代码
正确的应该是这样
i
love
bbs
bathome
net
请问楼主你出题的时候有没考虑到句号的是被划分在一个字符串里的
发表于 2010-9-10 12:45:59 | 显示全部楼层
原帖由 coobe 于 2010-9-7 16:45 发表

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

可以说说(%str:.=,%)的意思吗?
是吧这么都当成分隔符吗?还有别的用法吗?
发表于 2010-9-30 22:12:04 | 显示全部楼层

学习作业帖

A1:
  1. @echo off
  2. for  %%i in (I,love,bbs,bathroom,cn) do echo %%i
  3. pause
复制代码
A2:
  1. @echo off
  2. for %%i in (I,love,bbs,bathroom,cn) do (if "%%i"=="cn" echo %%i)
  3. pause
复制代码
发表于 2010-10-12 22:11:50 | 显示全部楼层
  1. @echo off
  2. set str=i love,bbs;bathome.net
  3. for /f "tokens=1-5 delims=,;." %%a in ("%str%") do (
  4. echo %%a %%b %%c %%d %%e
  5. )
  6. echo.
  7. for /f "tokens=2 delims=." %%i in ("%str%") do echo %%i
  8. pause>nul
复制代码
发表于 2010-10-24 16:52:55 | 显示全部楼层
楼主已经闭关2个月了,题目错了也没人改,cn改net
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 echo net
pause

评分

参与人数 1PB -2 收起 理由
Batcher -2 请编辑自己的帖子,把代码放到code标签里面 ...

查看全部评分

发表于 2010-12-5 13:13:38 | 显示全部楼层
  1. @echo off
  2. echo 先回答问题一
  3. set "str=I

  4. love,bbs;bathome.net"
  5. for /f "tokens=1,2" %%a

  6. in ("%str%") do (
  7. echo %%a
  8. for /f "tokens=1-4

  9. delims=,;." %%c in ("%%

  10. b") do (
  11. echo %%c
  12. echo %%d
  13. echo %%e
  14. echo %%f
  15. )
  16. )
  17. pause
  18. cls
  19. echo 以下是问题二解答
  20. pause
  21. @echo off
  22. set "str=I

  23. love,bbs;bathome.net"
  24. for /f "tokens=1,2" %%a

  25. in ("%str%") do (
  26. for /f "tokens=1-4

  27. delims=,;." %%c in ("%%

  28. b") do (
  29. echo %%f
  30. )
复制代码
发表于 2010-12-8 00:03:50 | 显示全部楼层
好好地看一看
发表于 2010-12-8 00:14:37 | 显示全部楼层

楼上可以

楼上可以再次精简一下…
发表于 2011-1-24 16:54:06 | 显示全部楼层
1
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause
2
@echo off
set str=I love,bbs;bathome.net
for /f "tokens=4 delims=,.;" %%a in ("%str%") do echo %%a
pause
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 03:11 , Processed in 0.025188 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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