Board logo

标题: 批处理for命令应用入门与进阶训练(2011年8月3日更新) [打印本页]

作者: youxi01    时间: 2008-1-3 22:24     标题: 批处理for命令应用入门与进阶训练(2011年8月3日更新)

本帖最后由 cjiabing 于 2011-9-25 23:56 编辑

第一套:
为加快新手对for命令的入门,特编制本套"试题"(可以将答案作为回帖)
1、批处理运行窗口显示1~100 这100 个数字;
2、批处理运行窗口显示 1、3、5.....99这50个数字;

3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口;
4、先将以下内容保存到F:\test.txt
  1. 1      2        3
  2. 4      5        6
  3. 7      8        9
复制代码
①将f:\test.txt内容全部显示在批处理窗口;
②只显示 2      5        8显示在批处理窗口(分三行显示,每字一行)
————————————————————————————————————
第二套:(2011年8月3日更新)
目的:针对for命令的入门与进阶的配套练习,以掌握for命令的参数为主,兼以考察新手对FOR的综合应用和对FOR中的变量延迟的了解。
要求:回帖答案请注明是哪道题。不懂变量延迟和多层嵌套的可搜索论坛相关帖子。B7题可以选做,只是用来考察FOR思想。

B1分行显示李白的古诗《静夜思》:“床前明月光   疑是地上霜   举头望明月   低头思故乡”
B2搜索系统盘(如C:\)下包含字符“mplayer”的所有文件(系统播放器),并分别显示路径名、文件名和后缀名
B3、显示递减数列:100、98、96、……、4、2、0,并求和
B4、从句子中提取“荡妇大游行”这个词:“穿了裙子,不等于说可以。”加拿大警察的“如果不想被强奸,就不要把自己打扮得像荡妇”言论引发了世界性的抗议。7月31日,继加拿大、美国、英国、澳大利亚、巴西、荷兰、韩国之后,印度新德里也举行了“荡妇大游行”。
B5、由“ipconfig”命令获得网络配置信息,请提取 IP 地址“192.168.1.100”。也可将以下内容保存为文本进行。
  1. Ethernet adapter 本地连接:
  2.         Connection-specific DNS Suffix  . :
  3.         IP Address. . . . . . . . . . . . : 192.168.1.100
  4.         Subnet Mask . . . . . . . . . . . : 255.255.255.0
  5.         Default Gateway . . . . . . . . . : 192.168.1.1
  6. ::由ipconfig命令获得以上网络配置信息,请提取 IP 地址。
复制代码

B6提取指定行。系统播放器wmplayer目录中有一文本eula.txt(路径:C:\Program Files\Windows Media Player\eula.txt),其中有一段内容如下:
  1. 13. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. You can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00. You cannot recover any other damages, including consequential, lost profits, special, indirect or incidental damages.
复制代码

请将以上这段内容提取出来。
如果找不到该文件,请在 C:\Program Files\ 目录下自己建一个,当然,文本内容至少应该有十行以上,并将这段内容放到文本中间。
B7、【选做】有一文本123.txt,内容如下:
  1. 3
  2. 4
  3. 5
  4. 6
  5. 7
  6. 9
  7. 9
  8. 9
  9. 10
  10. 10
复制代码

请用批处理表示以上数字的关系:将类似“3、4、5、6、7”递增关系的数字组合设为“顺子”;将类似“9、9、9、10、10”由三个相同的数字与另外两个相同的数字组成的数字关系设为“三带二”。
可以用后面这组数字加以验证你的代码:3、3、4、4、4、5、6、7、7、7、7。

提示:
B1:无参数的FOR的应用。
B2:FOR /R 与批处理参数的应用。
B3、FOR /L 的应用。
B4、FOR /F 的选项 Tokens和Delims的应用,FOR对列的处理。
B5、FOR /F 参数的综合应用。不限制思路,稍难。
B6、FOR /F 的选项Usebackq的应用,及FOR对行的提取。只能使用FOR解题,具体思路不限。
B7、FOR 与变量延迟。来自批处理斗地主游戏中对符合规则的牌的分析。较难,选做。
答案在19页271楼
————————————————————————————————————
第三套:拓展应用
C1、从下列命令行中提出路径“C:\WINDOWS\system32\cmd.exe”,不要双引号:
cmd /c ""C:\WINDOWS\system32\cmd.exe" /f"  280
C2、显示10秒倒计时。这个在其他地方有了,可以不做。
C3、
编辑中,有空完善……
————————————————————————————————————
要求:请用code标签把代码部分首尾括起来。

Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html

参考:批处理之家论坛使用常见问题FAQ
http://bbs.bathome.net/thread-3473-1-1.html
————————————————————————————————————
参考内容:
  [原创][系列教程]批处理for语句从入门到精通[20101225更新]
作者: awuxixi    时间: 2008-1-23 17:46

1、批处理运行窗口显示1~100 这100 个数字;
  1. for /L %%i in (1,1,100) do echo %%i
复制代码
2、批处理运行窗口显示 1、3、5.....99这50个数字;
  1. for /L %%i in (1,2,99) do echo %%i
复制代码
3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口;
  1. @echo off
  2. set var=bbs bathome.net
  3. echo %var%
  4. for /f "tokens=1 " %%a in ("%var%") do echo %%a
  5. for /f "tokens=2 " %%b in ("%var%") do echo %%b
  6. for /f "tokens=3 " %%c in ("%var%") do echo %%c
  7. pause>nul
复制代码
(我只能用三个for)
作者: lixiaodaoaaa    时间: 2008-2-4 10:20     标题: 不错啊!

做的不错,我去试着运行,楼上水平不错,继续努力!!
作者: youxi01    时间: 2008-2-8 14:30     标题: 回复 2# 的帖子

第三题,用三个for固然可以实现效果。
其实一个for就可以的了:
  1. echo off
  2. set var=bbs bathome.net
  3. echo %var%
  4. for  %%i in (%var%) do echo %%i
  5. pause>nul
复制代码

作者: lixiaodaoaaa    时间: 2008-2-13 11:16     标题: 有点不明白啊?

  1. for /f "tokens=1 " %%a in ("%var%") do echo %%a
  2. for /f "tokens=2 " %%b in ("%var%") do echo %%b
  3. for /f "tokens=3 " %%c in ("%var%") do echo %%c
复制代码
这三行不明白,其他的都能看懂,麻烦解释一下了........
有点难啊!
楼上的运行出现找不到文件,错误希望改一下........
努力!!!
作者: lixiaodaoaaa    时间: 2008-2-13 11:16     标题: 很不错

总体很不错,希望继续努力啊!!
作者: hsyxh    时间: 2008-2-14 21:27

学习了,我也要继续努力。
作者: ieutk    时间: 2008-3-1 13:41

4楼in后的集中少了双引号,所以就会出现找不到文件的错误

另外题目是这样的
将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口

作者: e119085072    时间: 2008-3-5 09:50     标题: 我什么都看不懂 怎么办

我一个都看不懂,要怎么办啊
作者: wklxdmyl    时间: 2008-3-7 09:12

努力啊!!!!!!
可惜第三个没有做出来
作者: scdengting    时间: 2008-3-10 09:42

谢谢各位高手,小弟学习了,谢谢
作者: kennywah    时间: 2008-3-11 11:37

我也是一个都看不懂啊.............
作者: pusofalse    时间: 2008-3-11 22:24

1
  1. for /l %%i in (1 1 100) do @echo %%i
复制代码
2
  1. for /l %%i in (1 2 100) do @echo %%i
复制代码
3
  1. for %%i in (bbs bathome.net) do @echo %%i
复制代码
4
  1. for /f "tokens=2" %%i in (f:\test.txt) do @echo %%i
复制代码
对否。。
作者: CecleCW    时间: 2008-3-19 00:45

1、批处理运行窗口显示1~100 这100 个数字
  1. for /l %%i in (1,1,100) do echo %%i
复制代码
2、批处理运行窗口显示 1、3、5.....99这50个数字;
  1. for /l %%i in (1,2,100) do echo %%i
复制代码
3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口
  1. @echo off
  2. set txt=bbs bathome.net
  3. for /f "tokens=1,2,3" %%i in ("%txt%") do set s1=%%i && set s2=%%j && set s3=%%k
  4. echo %s1%
  5. echo %s2%
  6. echo %s3%
  7. pause>nul
复制代码
4、
①将f:\test.txt内容全部显示在批处理窗口
  1. @echo off
  2. type test.txt
复制代码
或者
  1. @echo off
  2. for /f "tokens=1,2,3" %%i in (test.txt) do echo %%i %%j %%k
  3. pause>nul
复制代码
②只显示 2      5        8显示在批处理窗口(分三行显示,每字一行)
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set index=0
  4. for /f "tokens=2" %%i in (test.txt) do (
  5. set /a index+=1
  6. set str!index!=%%i
  7. )
  8. echo %str1%
  9. echo %str2%
  10. echo %str3%
  11. pause>nul
复制代码

作者: angelbbaa    时间: 2008-3-25 13:38     标题: 第三题

  1. @echo off
  2. for /f "tokens=1-3 delims=  " %%a in ("bbs bathome.net") do echo %%a%%b
  3. pause>nul
复制代码

作者: more    时间: 2008-3-27 09:17

第三题:
  1. @echo off
  2. set var=bbs bathome.net
  3. for /f "tokens=1-3 delims= " %%i in ("%var%") do (
  4. echo %%i
  5. echo %%j
  6. echo %%k
  7. )
  8. echo.&pause
复制代码

作者: 553850000    时间: 2008-3-29 21:03

等一题
@echo off
for /l %%a in (1,1,100) do @echo %%a
pause

第二题
@echo off
for /l %%a in (1,2,99) do @echo %%a
pause

第四题
@echo off
for /f "tokens=2 delims= " %%a in (test.txt) do @echo %%a
pause
作者: easyguy    时间: 2008-4-3 13:37

很好,我支持这种方法来批处理,希望以后能多出些题目让新手来练习!!!!!!!
作者: zhangxiaopeng    时间: 2008-4-4 15:01

第四题:
@echo off
type test.txt
for /f "tokens=2" %%i in (test.txt) do echo %%i
pause
作者: sohu886    时间: 2008-4-9 13:46

第三题:
   @echo off
   set var=bbs bathome.net
   echo %var%
   for /f "tokens=1,2* delims= " %%a in ("%var%") do (
   echo %%a
   echo %%b
   echo %%c
   )
   pause>nul
作者: 苹果也学批    时间: 2008-4-9 22:09

这么难,唉,还不懂,学习去,
作者: xiangzhili    时间: 2008-4-15 20:58     标题: 回贴

@echo off
for /L %%1 in (1,1,100) do echo %%1
for /L %%1 in (1,2,50)do echo %%1
pause>nul
第三个我不知道,不知道参数
作者: xiaoxx    时间: 2008-4-28 09:03

@echo off
echo 在批处理窗口显示1-100数字
pause
for /l %%i in (1,1,100) do echo %%i
echo 在批处理窗口显示1,3,5...99等50个数字
pause
for /l %%j in (1,2,99) do echo %%j
pause
set var=bbs bathome.net
for %%k in (%var%) do echo %%k
pause
type F:\test.txt
pause
for /f "tokens=2" %%l in (F:\test.txt) do echo %%l
pause
作者: yedashu    时间: 2008-5-8 13:34     标题: 刚学批处理,第三题参照4楼管理员改进了一下,可行,望指教

echo off
set var=bbs bathome.net
echo %var%
for /f "tokens=1,2,3" %%i in ("%var%") do echo %%i &echo %%j &echo %%k
pause>nul
作者: yedashu    时间: 2008-5-8 13:50     标题: 关于第三题,for的带/f和不带两种用法都可以实现,有什么区别阿?

for /f "tokens=1,2,3" %%i in ("%var%") do echo %%i &echo%%j &echo%%k
for %%k in (%var%) do echo %%k

in里面除了参数处理不一样外,他们循环取字符串时的是怎么取的,有什么区别阿?

刚学批处理,有太多不懂,望高手指点,先谢谢了!
作者: darkphx    时间: 2008-5-15 14:21

原帖由 yedashu 于 2008-5-8 13:50 发表
for /f "tokens=1,2,3" %%i in ("%var%") do echo %%i &echo%%j &echo%%k
for %%k in (%var%) do echo %%k

in里面除了参数处理不一样外,他们循环取字符串时的是怎么取的,有什么区别阿?

刚学批处理,有太多 ...


由于楼上的启发
我想问一下
如果在 for /f "tokens=1,2,3" %%i in ("%var%") do echo %%i &echo%%j &echo%%k 中
我想要引入字串 "%var%"而不是变量var怎么办?
有可能吗
请指教
作者: namejm    时间: 2008-5-15 16:39

  如果要引入字符串"%var%" 而不是变量var,那么,就需要用 %%var%% 来表示。
作者: darkphx    时间: 2008-5-15 23:40

谢谢~~~~~
作者: tangfu    时间: 2008-6-7 22:04

for /f "tokens=1,2,3" %%i in ("%var%") do echo %%i &echo%%j &echo%%k
for %%k in (%var%) do echo %%k
的区别到底是什么?

我用cmd的时候for %%k in (%var%) do echo %%k好像是直接循环字符串,/f是循环的文件内容,不知道这样理解对不对
作者: null    时间: 2008-8-3 12:16

第一个:
for /l %%i in (1 1 100) do @echo %%i

第二个:
for /l %%i in (1 2 100) do @echo %%i

第三个问题我看得不是很明白

第四个:
for /f "tokens=2 delims= " %%i in (f:\test.txt) do @echo %%i
作者: hexiao361    时间: 2008-8-21 09:41

tokens=1,2,3
这个是什么意思啊?
作者: jiangjun6    时间: 2008-8-26 21:40

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=bbs bathome.net
  4. for %%i in (%a%) do (
  5. set b=%%i
  6. echo !b!
  7. )
  8. pause
复制代码

作者: jiangjun6    时间: 2008-8-26 22:04

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=* delims=." %%i in (test.txt) do (
  4. set a=%%i
  5. echo !a!
  6. )
  7. pause
  8. @echo off
  9. setlocal enabledelayedexpansion
  10. for /f "tokens=2 delims= " %%i in (test.txt) do (
  11. set a=%%i
  12. echo !a!
  13. )
  14. pause
复制代码

作者: z_berry    时间: 2008-9-2 14:52

  1. @echo off
  2. for /L %%i in (1,1,10) do (
  3. echo %%i
  4. )
  5. pause
复制代码

作者: a794685135    时间: 2008-9-2 16:25

  1. @echo off
  2. echo 1.显示1~100这100个数字:
  3. for /l %%i in (1,1,100) do echo %%i
  4. pause
  5. echo 2.显示1、3、5……99这50个数字
  6. for /l %%i in (1,2,99) do echo %%i
  7. pause
  8. echo 3.将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口;
  9. set a=bbs bathome.net
  10. for /f "tokens=1,2,3" %%i in ('echo %a%') do (echo %%i
  11. echo %%j
  12. echo %%k)
  13. pause
  14. echo 4. ①test.txt内容全部显示在批处理窗口;
  15. for /f "tokens=*" %%i in ('type test.txt') do echo %%i
  16. echo 4. ②只显示 2      5        8显示在批处理窗口(分三行显示,每字一行)
  17. for /f "tokens=2" %%i in ('type test.txt') do echo %%i
  18. pause
复制代码

作者: jellyhk    时间: 2008-9-4 20:26

  1. @echo off
  2. color 0A
  3. title 工作
  4. echo 请输入你做的事情的标号!
  5. echo.-----------------------------------------------------
  6. echo. 1.显示1~100数字   2.显示1~100的单数
  7. echo. 3.将bbs bathome.net 分3行显示在窗口上
  8. echo. 4.将以下内容保存到F:\test.txt
  9. echo.
  10. echo.
  11. echo.
  12. echo.
  13. echo.
  14. echo.
  15. echo.
  16. echo.
  17. set /p input=请输入你去的地方:
  18. if "%input%"=="1" goto a
  19. if "%input%"=="2" goto b
  20. if "%input%"=="3" goto c else (goto d)
  21. goto eof
  22. :a
  23. cls
  24. for /l %%i in (1 1 100) do echo %%i
  25. pause>nul&&exit
  26. goto eof
  27. :b
  28. cls
  29. for /l %%i in (1 2 100) do echo %%i
  30. pause>nul&&exit
  31. goto eof
  32. :c
  33. cls
  34. for %%i in (bbs bathome.net) do echo %%i
  35. pause>nul&&exit
  36. goto eof
  37. :d
  38. cls
  39. if not exist F:\test.txt echo F盘下没有test.txt是否工具创建?(y/n)
  40. set /p a=请输入:
  41. if "%a%"==Y (echo 1       2       3>test.txt&echo 4        5        6&echo 7       8       9&&cls&echo 创建成功是否显示F:\test.txt,(y/n)&&goto :type)else (echo 你选择的是n那你自己去创建吧!^-^~&pause&&exit)
  42. if "%a%"==y (echo 1       2       3>test.txt&echo 4        5        6&echo 7       8       9&&cls&echo 创建成功是否显示F:\test.txt,(y/n)&&goto :type) else (echo 你选择的是n那你自己去创建吧!^-^~&pause&&exit)
  43. exit
  44. :type
  45. set /p=
  46. set /p a=输入:
  47. if "%a%"==y (goto 123)else (echo 你不想显示那就不显示!~)
  48. if "%a%"==Y (goto 123)else (echo 你不想显示那就不显示!~)
  49. pause&exit
  50. :123
  51. type F:\test.txt
  52. pause&
复制代码

作者: jht52114    时间: 2008-9-4 20:30

观摩  学习学习
作者: yuanyi123    时间: 2008-9-5 06:56

前来淘金,呵
作者: flyinshanghai    时间: 2008-9-5 16:57

想看看高手人们的答案,学习学习
作者: condy    时间: 2008-9-5 23:23

@echo off
for %%i in (1 1 100) do echo %%i
新手,不太会
作者: dywjzh    时间: 2008-9-8 11:59

  1. @echo off
  2. for /l %%i in (1,1,100) do echo %%i
  3. pause>null
  4. for /l %%j in (1,2,99) do echo %%j
  5. pause>nul
  6. echo bbs bathome.net
  7. set name=bbs bathome.net
  8. echo %name%
  9. echo 分三行显示:
  10. for /f "tokens=1 " %%a in ("%name%") do echo %%a
  11. for /f "tokens=2 " %%b in ("%name%") do echo %%b
  12. for /f "tokens=3 " %%c in ("%name%") do echo %%c
  13. for /f "tokens=1,2,3" %%a in ("%name%") do echo %%a %%b %%c
  14. pause>nul
  15. type first.txt
  16. echo 只显示 2 5 8显示在批处理窗口(分三行显示,每字一行)
  17. for /f "tokens=2 " %%a in (first.txt) do echo %%a
  18. for /f "tokens=5 " %%b in (first.txt) do echo %%b
  19. for /f "tokens=8 " %%c in (first.txt) do echo %%c
  20. pause>nul
复制代码

作者: batbird    时间: 2008-9-11 17:09

第一个:
@echo off
for /l  %%i in (1,1,100) do echo %%i
set i=
pause
第二个:
@echo off
for /l  %%i in (1,2,99) do echo %%i
set i=
pause
第三个:
@echo off
for /f  "tokens=1-3  delims= " %%i in ("bbs bathome.net") do (
         echo %%i
         echo %%j
         echo %%k
)
set i=
set j=
set k=
pause
第四个:
@echo off
type test.txt
for /f "tokens=1-3 delims= " %%i in (test.txt) do echo %%j
pause
-----------------------------------------------------------------------------------------------
编辑一下,我将echo<变量>都按照echo %%val% 的格式写了(也没有错),应该是echo %%val,请高人解释一下为什么出了for就要用echo %val%格式,不太明白,谢谢~

[ 本帖最后由 batbird 于 2008-9-11 17:22 编辑 ]
作者: AK47    时间: 2008-9-16 15:44

@echo off
for /l %%i in (1 1 100) do echo %%i
pause
作者: AK47    时间: 2008-9-16 15:46

@echo off
for /l %%i in (1 3 99) do echo %%i
pause
作者: AK47    时间: 2008-9-16 15:47

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

作者: lulu520zlh    时间: 2008-9-19 14:39

  1. @echo off
  2. for /l %%i in (1 1 100) do echo %%i
  3. pause>nul
  4. for /l %%i in (1 2 99) do echo %%i
  5. pause>nul
  6. for /f "tokens=1,2,3" %%i in ("bbs bathome.net") do (
  7. echo %%i
  8. echo %%j
  9. echo %%k
  10. )
  11. pause>nul
  12. type 2.txt
  13. echo.
  14. for /f "tokens=2" %%i in (2.txt) do echo %%i
  15. pause>nul
复制代码

作者: foolharry    时间: 2008-10-23 00:19

新手,看不明白,还得多学啊
作者: zqy    时间: 2008-10-23 22:47

我是新手啊
试试看
1、批处理运行窗口显示1~100 这100 个数字;
@echo off
for /l %%i in (1 1 100) do echo %%i
pause>nul
2、批处理运行窗口显示 1、3、5.....99这50个数字;
@echo off
for /l %%i in (1 2 100) do echo %%i
pause>nul
3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口:
@echo off
for /f "tokens=1,2,3 delims= " %%a in ("bbs bathome.net") do (
echo %%a
echo %%b
echo %%c
)
pause>nul
4、先将以下内容保存到F:\test.txt

我是新手,那两题都不会做啊
作者: alex1987    时间: 2008-10-23 23:14     标题: 第4题答案

(1)。
@echo off
for /f "tokens=1-2*"  %%a in (f:/test.txt) do echo %%a %%b %%c
pause

(2)。

@echo  off
for /f   "tokens=2" %%a in (f:/test.txt) do echo  %%a  
pause
作者: loveruixue    时间: 2008-10-30 15:07

for /l %%a in (1 1 100) do @echo %%a
for /l %%a in (1 2 99) do @echo %%a
for %%a in (bbs bathome.net) do @echo %%a
for /f "tokens=1,2,3" %%a in (test.txt) do @echo %%a %%b %%c
for /f "tokens=2" %%a in (test.txt) do @echo %%a
作者: claude55    时间: 2008-10-31 00:01

1 for /l %%i in (1,1,100) do echo %%i
2 for /l %%i in (1,2,99) do echo %%i
3 for /f "tokens=1-3" %%i in ("bbs bathome.net") do (
echo %%i
echo %%j
echo %%k
)
4 ①for /f "delims=" %%a in (test.txt) do echo %%a  可以保证原格式。。。
   ②for /f "tokens=2" %%a in (test.txt) do echo %%a

[ 本帖最后由 claude55 于 2008-10-31 00:15 编辑 ]
作者: nomyself    时间: 2008-11-2 10:01

第一题:
  1. for /l %%i in (1,1,100) do @echo %%i
复制代码
第二题:
  1. for /l %%i in (1,2,100) do @echo %%i
复制代码
第三题:
  1. @echo off
  2. set var=bbs bathome.net
  3. for /f "tokens=1-3 delims= " %%i in ("%var%") do (
  4. echo %%i
  5. echo %%j
  6. echo %%k
  7. )
复制代码
第四题:
1,
  1. for /f "delims=" %%i in (test.txt) do @echo %%i
复制代码
2,
  1. for /f "tokens=2" %%i in (test.txt) do @echo %%i
复制代码

作者: bbszsnetcom    时间: 2008-11-3 08:55

第三题这样做,不可以吗?
\@echo off
for %%i in (bbs bathome.net) do echo %%i
pause
作者: kennybao    时间: 2008-11-10 14:46

我的答案,请指教:
Title1.
  1. @echo off
  2. for /l %%a in (1 1 100) do echo/&echo %%a
  3. pause>nul
复制代码



Title2.
  1. @echo off
  2. for /l %%a in (1 2 100) do echo/&echo %%a
  3. pause>nul
复制代码



Title3.
  1. @echo off
  2. echo 处理前:bbs bathome.net
  3. echo\&echo/&echo.
  4. echo 处理后:
  5. for /f "tokens=1,2* delims= " %%a in ("bbs bathome.net") do echo %%a&echo.%%b&echo.%%c
  6. pause>nul
复制代码



Title4.
  1. @echo off
  2. type test.txt
  3. echo.&echo\
  4. for /f "tokens=2 delims= " %%a in (test.txt) do echo %%a&echo.
  5. pause>nul
复制代码

作者: dglsy    时间: 2008-11-12 14:13

@echo off
echo.
echo start..............
for /l %%i in (1,1,100) do echo %%i
echo.
pause
for /l %%i in (1,2,100) do echo %%i
echo.
pause
for %%i in (bbs bathome.net) do echo %%i
echo.
pause
echo "1 2 3">test.txt
echo "4 5 6">>test.txt
echo "7 8 9">>test.txt
echo finished!
pause
作者: akiraakito    时间: 2008-11-13 13:59

1:
  1. @echo off
  2. for /l %%i in (1,1,100) do echo %%i
  3. pause>nul
复制代码

2:
  1. @echo off
  2. for /l %%i in (1,2,99) do echo %%i
  3. pause>nul
复制代码

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

4-1:
  1. @echo off
  2. for /f "tokens=*" %%i in (test.txt) do (echo %%i)
  3. pause>nul
复制代码

4-2
  1. @echo off
  2. for /f "tokens=2" %%i in (test.txt) do (echo %%i)
  3. pause>nul
复制代码

作者: frankies26    时间: 2008-11-15 16:40

还好比较简单
作者: adrien0901    时间: 2008-11-17 10:29

echo off
set var=bbs bathome.net
echo %var%
for /f "tokens=1,2,3" %%i in ("%var%") do echo %%i &&echo.%%j &&echo.%%k
pause>nul
作者: derek_pan    时间: 2008-11-27 17:46

原帖由 pusofalse 于 2008-3-11 22:24 发表
1   for /l %%i in (1 1 100) do @echo %%i
2   for /l %%i in (1 2 100) do @echo %%i
3  for %%i in (bbs bathome.net) do @echo %%i
4  for /f "tokens=2" %%i in (f:\test.txt) do @echo %%i


对否。。

这个是对的!厉害,这么简单的语句就搞定了!
作者: lsp19880301    时间: 2008-12-1 22:47     标题: 回复 2楼 的帖子 尊敬的老大们,小菜我有礼啦

你好,请问这个句中 for /L %%i in (1,1,100) do echo %%i   中的 /L  是什么意思,能否给个解释,
还有以下这几个 “tokens=1" 是什么意思,我看不懂。。
for /f "tokens=1 " %%a in ("%var%") do echo %%a
   for /f "tokens=2 " %%b in ("%var%") do echo %%b
   for /f "tokens=3 " %%c in ("%var%") do echo %%c
   pause>nul
谢谢。。。小弟我刚回这不多久。望能得前辈的指点
作者: qqha001    时间: 2008-12-8 11:03     标题: 我来贴个不用for命令的 请高手指教

set n=1
:e
if %n% LSS 101 echo %n% & set /a n=n+1 & goto e
pause


set n=1
:e
if %n% LSS 100 echo %n% & set /a n=n+2 & goto e
pause
作者: firewolf85    时间: 2008-12-9 22:12

1.
  1. @echo off
  2. for /l %%I in (1 1 100) do echo %%I
  3. pause>nul
复制代码
2.
  1. @echo off
  2. for /l %%I in (1 2 100) do echo %%I
  3. pause>nul
复制代码
3
  1. @echo off
  2. for %%i in (bbs bathome.net) do echo %%i
  3. pause>nul
复制代码
4.
  1. @echo off
  2. for /f "delims=," %%i in (f:\test.txt) do echo %%i
  3. echo.
  4. for /f "delims=," %%i in (f:\test.txt) do (
  5. set i=%%i
  6. call set /p=!!i:~7,1!!<nul&echo.
  7. )
  8. pause>nul
复制代码

作者: Batcher    时间: 2009-1-5 12:35     标题: 回复 61楼 的帖子

本版有for命令讲解,建议多看看。
作者: p05401144    时间: 2009-1-9 22:12

学了一个FOR的参数/L
另外第3题我觉得这样最简单
@echo off
for /f "tokens=1-3" %%i in ("bbs bathome.net") do (echo %%i %%j %%k)
pause
作者: chenliujun    时间: 2009-1-10 14:56     标题: 回复 16楼 的帖子

@echo off
set var=bbs bathome.net
for /f "tokens=1-3 delims= " %%i in ("%var%") do (
echo %%i
echo %%j
echo %%k
)
echo.&pause这里为什么是I J k的 希望解释下!
作者: skysun    时间: 2009-1-11 11:21

原帖由 jellyhk 于 2008-9-4 20:26 发表
@echo off
color 0A
title 工作
echo 请输入你做的事情的标号!
echo.-----------------------------------------------------
echo. 1.显示1~100数字   2.显示1~100的单数
echo. 3.将bbs bathome.net 分3行显示 ...



为什么改别人的我会改  自己就是写不出来 - -||
  1. @echo off
  2. color 0A
  3. title 工作
  4. echo 请输入你做的事情的标号!
  5. echo.-----------------------------------------------------
  6. echo. 1.显示1~100数字   2.显示1~100的单数
  7. echo. 3.将bbs bathome.net 分3行显示在窗口上
  8. echo. 4.将以下内容保存到F:\test.txt   
  9. echo. R键返回   Q键退出
  10. echo.
  11. echo.
  12. echo.
  13. echo.
  14. echo.
  15. echo.
  16. echo.
  17. set /p input=请输入你去的地方:
  18. if "%input%"=="1" goto a
  19. if "%input%"=="2" goto b
  20. if "%input%"=="3" goto c
  21. if "%input%"=="r" goto r  else (goto d)
  22. goto eof
  23. :a
  24. cls
  25. for /l %%i in (1 1 100) do echo %%i
  26. pause>nul&&goto r
  27. goto eof
  28. :b
  29. cls
  30. for /l %%i in (1 2 100) do echo %%i
  31. pause>nul&&goto r
  32. goto eof
  33. :c
  34. cls
  35. for %%i in (bbs bathome.net) do echo %%i
  36. pause>nul&&goto r
  37. goto eof
  38. :d
  39. cls
  40. if not exist F:\test.txt echo F盘下没有test.txt是否工具创建?(y/n)
  41. set /p a=请输入:
  42. if "%a%"==Y (echo 1       2       3>test.txt&echo 4        5        6&echo 7       8       9&&cls&echo 创建成功是否显示F:\test.txt,(y/n)&&goto :type)else (echo 你选择的是n那你自己去创建吧!^-^~&pause&&exit)
  43. if "%a%"==y (echo 1       2       3>test.txt&echo 4        5        6&echo 7       8       9&&cls&echo 创建成功是否显示F:\test.txt,(y/n)&&goto :type) else (echo 你选择的是n那你自己去创建吧!^-^~&pause&&exit)
  44. exit
  45. :type
  46. set /p=
  47. set /p a=输入:
  48. if "%a%"==y (goto 123)else (echo 你不想显示那就不显示!~)
  49. if "%a%"==Y (goto 123)else (echo 你不想显示那就不显示!~)
  50. pause&exit
  51. :123
  52. type F:\test.txt
  53. :r
  54. cls
  55. @echo off
  56. color 0A
  57. title 工作
  58. echo 请输入你做的事情的标号!
  59. echo.-----------------------------------------------------
  60. echo. 1.显示1~100数字   2.显示1~100的单数
  61. echo. 3.将bbs bathome.net 分3行显示在窗口上
  62. echo. 4.将以下内容保存到F:\test.txt
  63. echo.
  64. echo.
  65. echo.
  66. echo.
  67. echo.
  68. echo.
  69. echo.
  70. echo.
  71. set /p input=请输入你去的地方:
  72. if "%input%"=="1" goto a
  73. if "%input%"=="2" goto b
  74. if "%input%"=="3" goto c else (goto d)
  75. goto eof
  76. :Q
  77. pause&exit
复制代码

[ 本帖最后由 skysun 于 2009-1-11 11:23 编辑 ]
作者: willowchun    时间: 2009-1-12 13:25

1、批处理运行窗口显示1~100 这100 个数字;
for /l %%i in (1,1,100) do echo %%i
2、批处理运行窗口显示 1、3、5.....99这50个数字;
for /l %%i in (1,2,99) do echo %%i
3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口;
@echo off&setlocal enabledelayedexpansion
for /l %%i in (1,1,3) do (
    set "a=bbs bathome.net"
    echo !a!
    )
pause
4、先将以下内容保存到F:\test.txt
复制内容到剪贴板代码:
1      2        3
4      5        6
7      8        9
①将f:\test.txt内容全部显示在批处理窗口;
for /f  "delims=" %%i in (f:\test.txt) do echo %%i
②只显示 2      5        8显示在批处理窗口(分三行显示,每字一行)
for /f "tokens=2 delims= " %%i in (test.txt) do echo %%i

[ 本帖最后由 willowchun 于 2009-1-12 13:26 编辑 ]
作者: ccmvhd    时间: 2009-1-20 20:30

@echo off&&color 0a&&title 练习
echo.------------------------------------
:start
cls&&set a=0
echo.1.显示1~100
echo.2.显示100以内的单数
echo.3.将bbs bathome.net 分3行显示
echo.4.处理文本
echo.5.退出本练习作业
echo.在任一小题结束后按回车键将返回操作目录
echo.
set /p a=请输入小题目号:
if %a%==1 goto :aaa
if %a%==2 goto :bbb
if %a%==3 goto :ccc
if %a%==4 goto :ddd
if %a%==5 goto :end
echo 想忽悠在下? 呵呵。。。
pause>nul&&goto :start
:end
echo 都是些苯办法,呵呵。。
pause>nul&&exit
:aaa
for /l %%i in (1,1,100) do echo %%i
pause>nul&&goto :start
:bbb
setlocal enabledelayedexpansion
set a=1
echo %a%
for /l %%i in (1,1,49) do (
set /a b=2*%%i+a
echo !b!
)
pause>nul
goto :start
:ccc
setlocal enabledelayedexpansion
for /f "tokens=1-3 delims= " %%a in ("bbs bathome.net") do (
echo %%a
echo %%b
echo %%c &&pause>nul
)
goto :start
:ddd
for /f "skip=46 tokens=2 delims= " %%i in (%~nx0) do call echo %%i
pause>nul&goto :start
1      2        3
4      5        6
7      8        9
作者: zhangenming    时间: 2009-1-24 20:56

1:
@echo off
for /l %%i in (1,1,100) do echo %%i
pause>nul


2:
@echo off
for /l %%i in (1,2,100) do echo %%i
pause>nul


3:
@echo off
for %%i in (bbs bathome.net) do echo %%i
pause>nul


4:
@echo off
for /f "delims=*" %%i in (e:\test.txt) do echo %%i
pause>nul

5:
@echo off
for /f "tokens=2" %%i in (e:\test.txt) do echo %%i
pause>nul



都还行吧?!
作者: strong12345    时间: 2009-1-25 12:06     标题: 小弟初學者 第3題 1個for完成

@echo off
for /f "tokens=1,2,3 delims= " %%a in ("bbs bathome.net") do echo %%a>test.txt & echo %%b >> test.txt & echo %%c >> test.txt
作者: strong12345    时间: 2009-1-27 08:10     标题: 小弟已經全部理解了,並寫出全部解答(全部一個for)

第一題:
  1. @echo off
  2. for /L %%a in (1,1,100) do echo %%a
  3. pause>nul
复制代码


第二題:
  1. @echo off
  2. for /L %%a in (1,2,99) do echo %%a
  3. pause>nul
复制代码


第3題:
  1. @echo off
  2. for /F "tokens=1-3" %%a in ("bbs bathome.net") do echo %%a & echo %%b & echo %%c
  3. pause>nul
复制代码


第4題①:  (輸出空格數與原文件同)
  1. @echo off
  2. for /F "delims=" %%a in (F:\test.txt) do echo %%a
  3. pause>nul
复制代码


第4題②:
  1. @echo off
  2. for /F "tokens=1-3" %%a in (F:\test.txt) do echo %%b
  3. pause>nul
复制代码

[ 本帖最后由 strong12345 于 2009-1-27 11:28 编辑 ]
作者: evident    时间: 2009-2-5 16:17

三题 是不是只是将单词 分行?如果是的话,下面的就可以实现。
@echo off
set str=bbs bathome.net
for %%i in (%str%) do echo %%i
pause
作者: hongznbiao    时间: 2009-2-7 16:49     标题: 菜鸟我来学习

菜鸟我来学习,训练自己的思考能力.
作者: mn960mn    时间: 2009-2-7 19:05     标题: 回复for应用入门训练 1

@echo off
for /l %%a in (1 1 100) do echo %%a
pause
exit
作者: zjs4814466    时间: 2009-2-11 09:28     标题: 回复 1楼 的帖子

@echo off
set var=bbs bathome.net
echo %var%
for %%j in (bbs bathome.net) do echo %%j
pause
我这样运行也可以达到题目的显示要求,但是这里为什么用set ?我是菜鸟还希望各位大鸟指教!!!!!!!!!!!!
作者: Batcher    时间: 2009-2-11 09:32     标题: 回复 76楼 的帖子

set仅仅是为了定义一个变量而已
作者: zjw767676    时间: 2009-2-15 17:12

1    for /l %%i in (1 1 100) do echo %%i
2   for /l %%i in (1 2 100) do echo %%i
3   for %%i in ("bbs bathome net") do %%i
4         1.for /f "delmis=" %%i in (f:\test.txt) do echo %%i
            2 for /f "tokens=2" %%i in (f:\test.txt) do echo %%i
作者: conjeelin    时间: 2009-2-17 19:31

第四题
@echo off
for /f "delims=;" %%j in (test.txt) do echo %%j
echo.
for /f "tokens=2" %%i in (test.txt) do echo %%i
pause
作者: pzspdl    时间: 2009-2-22 22:52

其实第三题的意思我根本不懂
作者: hyx    时间: 2009-2-24 19:57

4.1       for /f "tokens=*" %%i in (test.txt) do echo %%i
4.2       for /f "tokens=2,5,8" %%i in (test.txt) do echo %%i
作者: myzwd    时间: 2009-2-24 20:48     标题: 回复 1楼 的帖子

@echo off
mode con cols=800 lines=600
for /f "tokens=*" %%i in ('more /c +5 %~s0') do (
echo %%i )
exit /b 10
                             1      2        3
                             4      5        6
                             7      8        9
作者: iamcfan    时间: 2009-3-3 19:36

原帖由 zjw767676 于 2009-2-15 17:12 发表
1    for /l %%i in (1 1 100) do echo %%i
2   for /l %%i in (1 2 100) do echo %%i
3   for %%i in ("bbs bathome net") do %%i
4         1.for /f "delmis=" %%i in (f:\test.txt) do echo %%i
            ...

我们的做法是如出一辙,其实很多朋友都把简单的问题复杂化了.
作者: bestsea    时间: 2009-3-4 16:05     标题: 交卷

1,
@echo off
for /l %%i  in (1 1 100) do echo %%i
pause
2,
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1 1 50) do (set a=%%i & set /a b=!a!*2-1 &echo !b!)
pause
3,
@echo off
for %%I in (bbs bathome.net) do echo %%I
pause
4,
@echo off
for /f "tokens=1,2,3" %%i in (test.txt)  do echo %%i %%j %%k
pause

for /f "tokens=2" %%i in (test.txt) do echo %%i
pause
作者: qxhonker    时间: 2009-3-5 15:44

1.
  1. @echo off
  2. for /l %%a in (1,1,100) do echo %%a
  3. pause
复制代码
2.
  1. @echo off
  2. for /l %%a in (1,2,100) do echo %%a
  3. pause
复制代码
3.
  1. @echo off
  2. for %%a in (bbs bathome.net) do echo %%a
  3. pause
复制代码
如果是在文本中:
test.txt
  1. bbs bathome.net
复制代码
main.bat
  1. @echo off
  2. for /f "tokens=1-3" %%a in (test.txt) do echo %%a&echo %%b&echo %%c
  3. pause
复制代码
4.
  1. @echo off
  2. for /f "delims=" %%a in (test.txt) do echo %%a
  3. pause
复制代码
  1. @echo off
  2. for /f "tokens=2" %%a in (test.txt) do echo %%a
  3. pause
复制代码

作者: qxhonker    时间: 2009-3-5 15:49

原帖由 iamcfan 于 2009-3-3 19:36 发表

我们的做法是如出一辙,其实很多朋友都把简单的问题复杂化了.


我看你们错了吧

for %%i in ("bbs bathome.net") do echo %%i
这里不应该要双引号吧
我试了下  加双引号就只显示一行了
作者: xiaoruiado    时间: 2009-3-14 20:30

@echo off
set context=bbs bathome.net
echo %context%
echo 1   2   3 > e:\test.txt
echo 4   5   6 >> e:\test.txt
echo 7   8   9 >> e:\test.txt
for /f %%i in (e:\test.txt) do echo %%i
pause>nul
作者: mypichuli    时间: 2009-3-15 13:08

学习了,多谢
作者: rogoo    时间: 2009-3-22 15:37

::1
for /l %%i in (1,1,100) do (echo  %%i)
::2
for /l %%i in (1,2,100) do (echo %%i)
::3
for /f %%i in ("bbs.bathome.net) do (echo %%i)
::4.1
type f:\text.txt
::或者
for /f %%i in (F:\text.txt) do (echo %%i)
::4.2
for /f "delims=       tokens=2" %%i in (F:\text.txt) do (echo %%i)
作者: freeback    时间: 2009-3-22 17:29

1.for %%i in(1 1 100) do echo. %%i
2.for /l %% in(1 2 99) do echo.%%i
作者: rboert    时间: 2009-3-27 10:09

  1. @echo off
  2. for %%i in (f:\test.txt) do type %%i
  3. echo.
  4. echo.
  5. for /f "tokens=*" %%i in (f:\test.txt) do echo %%i
  6. echo.
  7. for /f "tokens=2" %%i in (f:\test.txt) do echo %%i
  8. pause >nul
复制代码

作者: wanpg    时间: 2009-3-27 16:23

关注了。
第3个:
echo off
set var="bbs bathome.net"
for /f "tokens=1,2,3" %%i in (%var%) do (
        echo %%i
        echo %%j
        echo %%k
)
这样可以,但是如果set var="bbs bathome.net"不加引号,有问题。
作者: cainiao736    时间: 2009-3-27 21:00

第一题:
  1. @echo off
  2. for /l %%i in (1,1,100) do echo %%i
  3. pause
复制代码
第二题:
  1. @echo off
  2. for /l %%i in (1,2,99) do echo %%i
  3. pause
复制代码
第三题:
  1. @echo off
  2. set str=bbs bathome.net
  3. set count=1
  4. :begin
  5. for /f "tokens=%count% delims= " %%i in ("%str%") do (echo %%i&&set /a count+=1&&goto begin)
  6. pause
复制代码
第四题:
1.
  1. @echo off
  2. type test.txt
  3. pause>nul
复制代码
2.
  1. @echo off
  2. for /f "tokens=2 delims= " %%i in (test.txt) do echo %%i
  3. pause
复制代码

作者: lygwdyanzi    时间: 2009-4-4 12:15

  1. @echo off
  2. for /f "delims=&" %%i in (test.txt) do echo %%i
  3. pause
复制代码
将分隔符换成txt文件中不存在的符号,能显示全部

[ 本帖最后由 lygwdyanzi 于 2009-4-4 12:17 编辑 ]
作者: key790927    时间: 2009-4-13 14:05     标题: 回复 4楼 的帖子

两个问题:
1.for 语句中%var%是否需要加引号啊?不加好像不行?
2.即使加了引号,打印出来的也不是3行,而是3列!
谢谢!
作者: smallflystar    时间: 2009-4-18 22:18     标题: 我的答案

@echo off
for /f "tokens=1-3 delims= " %%i in (c:\test.txt) do echo %%i        %%j        %%k
pause
for /f "tokens=2 delims= " %%i in (c:\test.txt) do echo         %%i
pause
作者: Batcher    时间: 2009-4-18 23:59     标题: 回复 95楼 的帖子

原文有笔误,作者已更正,请重新测试。
作者: czq19731102    时间: 2009-4-20 10:03     标题: 我的答案

@echo 1、批处理运行窗口显示1~100 这100 个数字
@echo off
for /l %%i in (1,1,100) do echo %%i
pause
@echo 2、批处理运行窗口显示 1、3、5.....99这50个数字
for /l %%i in (1,2,99) do echo %%i
pause
@echo 3.1、将 bbs bathome.net 在同一行显示在批处理运行窗口
for /f "tokens=1-3" %%i in ("bbs bathome.net") do echo %%i %%j %%k
pause
@echo 3.2、将 bbs bathome.net 分成三行显示在批处理运行窗口
for /f "tokens=1-3" %%i in ("bbs bathome.net") do echo. %%i & echo. %%j & echo. %%k
pause
@echo 4.1、将f:\test.txt内容全部显示在批处理窗口
for /f "delims=" %%i in (f:\test.txt) do echo %%i
pause
@echo 4.2只显示 2      5        8显示在批处理窗口(分三行显示,每字一行)
for /f "tokens=2" %%i in (f:\test.txt) do echo %%i
pause

[ 本帖最后由 czq19731102 于 2009-4-20 10:08 编辑 ]
作者: haizi0115    时间: 2009-4-20 12:23     标题: 第三题

第三题

@echo off
for %%i in (bbs bathome.net) do echo %%i
pause
作者: txb1989    时间: 2009-4-27 17:07

@echo off
for /l %%a in (1,1,100) do echo %%a
pause
作者: xuqingbai    时间: 2009-4-27 18:09

4.1
@echo off
for /f "delims=," %%i in (c:\0.txt) do echo %%i
pause




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