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

批处理for命令应用入门与进阶训练(2011年8月3日更新)

[复制链接]
发表于 2012-1-6 11:19:56 | 显示全部楼层

  1. @echo off
  2. for /l %%a in (1,1,100) do echo %%a
  3. pause>nul

  4. @echo off
  5. for /l %%a in (1,2,99) do echo %%a
  6. pause>nul

  7. @echo off
  8. for /f  "tokens=1,2,3 delims=. " %%a in ("bbs bathome.net") do (
  9. echo %%a
  10. echo %%b
  11. echo %%c
  12. )
  13. pause>nul

  14. @echo off
  15. for /f "tokens=1,2,3" %%i in (test.txt) do echo %%i %%j %%k
  16. pause>nul


  17. @echo off
  18. for /f "tokens=2 delims= " %%a in (test.txt) do (
  19. echo %%a
  20. )
  21. pause>nul
复制代码

评分

参与人数 1技术 +1 收起 理由
cjiabing + 1 很好

查看全部评分

发表于 2012-2-18 15:29:21 | 显示全部楼层
1

  1. @echo off
  2. for /l %%a in (1,1,100) do echo %%a
复制代码
2

  1. @echo off
  2. for /l %%a in (1,2,100) do echo %%a
复制代码
3

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

评分

参与人数 1PB +6 收起 理由
cjiabing + 6 很好

查看全部评分

发表于 2012-2-25 21:46:46 | 显示全部楼层
第一套题目
  1. ::1、批处理运行窗口显示1~100 这100 个数字;
  2. ::2、批处理运行窗口显示 1、3、5.....99这50个数字;
  3. ::3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口;
  4. ::4、先将以下内容保存到F:\test.txt
  5. ::1      2        3
  6. ::4      5        6
  7. ::7      8        9
  8. ::①将f:\test.txt内容全部显示在批处理窗口;
  9. ::②只显示 2      5        8显示在批处理窗口(分三行显示,每字一行)

  10. @echo off

  11. rem 1、批处理运行窗口显示1~100 这100 个数字;
  12. echo 1、显示1-100的数字:
  13. pause>nul
  14. for /l %%i in (1,1,100) do echo %%i
  15. pause

  16. rem 2、批处理运行窗口显示 1、3、5.....99这50个数字;
  17. echo 2、显示1、3、5.....99这50个数字:
  18. pause>nul
  19. for /l %%i in (1,2,100) do echo %%i
  20. pause

  21. rem 3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口;
  22. echo 3、bbs bathome.net (在同一行)分成三行显示
  23. pause>nul
  24. for /f "tokens=1-3 delims=. " %%i in ("bbs bathome.net") do (echo %%i)&(echo %%j)&(echo %%k)
  25. pause

  26. rem 4、显示test.txt全部内容到界面,显示2 5 8到界面
  27. echo 4.1、显示test.txt全部内容到界面
  28. pause>nul
  29. for /f "delims=" %%i in (E:\Sync115\bathome\tmp\test1.txt) do echo %%i
  30. pause

  31. echo 4.2、只显示2 5 8到界面
  32. pause>nul
  33. for /f "tokens=2" %%i in (E:\Sync115\bathome\tmp\test1.txt) do echo %%i
  34. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
cjiabing + 1 很好

查看全部评分

发表于 2012-3-5 22:01:52 | 显示全部楼层
  1. ::分行显示李白的古诗《静夜思》:“床前明月光   疑是地上霜   举头望明月   低头思故乡”

  2. @echo off
  3. for /f "tokens=1-4" %%i in ("床前明月光   疑是地上霜   举头望明月   低头思故乡") do (
  4.         echo %%i
  5.         echo %%j
  6.         echo %%k
  7.         echo %%l
  8. )
  9. pause
复制代码
发表于 2012-3-5 22:02:25 | 显示全部楼层
  1. ::搜索系统盘(如C:\)下包含字符“mplayer”的所有文件(系统播放器),并分别显示路径名、文件名和后缀名。

  2. @echo off
  3. echo ************ for /r searching
  4. echo ************ Searching files with string "mplayer" in disk C:
  5. for /r c:\ %%i in (*mplayer*) do echo %%i


  6. echo.&echo.
  7. echo ************ for /f searching
  8. echo ************ Searching files with string "mplayer" in disk C:
  9. for /f "delims=" %%i in ('dir /a /b /s c:\*mplayer*') do echo %%i
  10. pause
复制代码
发表于 2012-3-5 22:02:50 | 显示全部楼层
  1. ::显示递减数列:100、98、96、……、4、2、0,并求和。

  2. @echo off&setlocal enabledelayedexpansion

  3. echo ====== NUMBER 100 -- 1 =======
  4. rem 用count计数,每10个数输出一行
  5. set count=0
  6. set sum=0

  7. for /l %%i in (100, -1, 1) do (
  8.         set /a count+=1
  9.         set /a sum+=%%i
  10.        
  11.         if !count!==1 (
  12.                 set line=%%i
  13.         ) else (
  14.                 set line=!line! %%i
  15.         )
  16.        
  17.         if !count!==10 (
  18.                 echo !line!
  19.                 set count=0
  20.         )
  21. )

  22. echo.
  23. echo The sum of 100 to 1 is %sum%
  24. pause


  25.        
复制代码
发表于 2012-3-5 22:03:16 | 显示全部楼层
  1. ::从句子中提取“荡妇大游行”这个词:“穿了裙子,不等于说可以。”加拿大警察的“如果不想被强奸,就不要把自己打扮得像荡妇”
  2. ::言论引发了世界性的抗议。7月31日,继加拿大、美国、英国、澳大利亚、巴西、荷兰、韩国之后,印度新德里也举行了“荡妇大游行”。

  3. @echo off
  4. for /f "delims=“” tokens=5" %%i in ("“穿了裙子,不等于说可以。”加拿大警察的“如果不想被强奸,就不要把自己打扮得像荡妇”言论引发了世界性的抗议。7月31日,继加拿大、美国、英国、澳大利亚、巴西、荷兰、韩国之后,印度新德里也举行了“荡妇大游行”") do (
  5.         echo %%i
  6. )
  7. pause
复制代码
发表于 2012-3-5 22:03:42 | 显示全部楼层
  1. ::由“ipconfig”命令获得网络配置信息,请提取 IP 地址“192.168.1.100”。也可将以下内容保存为文本进行。
  2. ::Ethernet adapter 本地连接:
  3. ::        
  4. ::                Connection-specific DNS Suffix  . :
  5. ::      
  6. ::                IP Address. . . . . . . . . . . . : 192.168.1.100
  7. ::        
  8. ::                Subnet Mask . . . . . . . . . . . : 255.255.255.0
  9. ::      
  10. ::                Default Gateway . . . . . . . . . : 192.168.1.1
  11. ::
  12. ::由ipconfig命令获得以上网络配置信息,请提取 IP 地址。

  13. @echo off&setlocal enabledelayedexpansion
  14. set count=0
  15. for /f "skip=2 tokens=15" %%i in (ipconfig.txt) do (
  16.         set /a count+=1
  17.         if !count!==1 echo %%i
  18. )
  19. pause
复制代码
发表于 2012-3-5 22:08:09 | 显示全部楼层
  1. ::有一文本123.txt,内容如下:
  2. ::3 4 5 6 7 9 9 9 10 10
  3. ::请用批处理表示以上数字的关系:将类似“3、4、5、6、7”递增关系的数字组合设为“顺子”;
  4. ::将类似“9、9、9、10、10”由三个相同的数字与另外两个相同的数字组成的数字关系设为“三带二”。
  5. ::可以用后面这组数字加以验证你的代码:3、3、4、4、4、5、6、7、7、7、7。

  6. @echo off&setlocal enabledelayedexpansion
  7. echo ** 请输入10个数字,以空格分隔:
  8. echo ** 数字间的格式为:一个递增的5顺+3个相同数字+2个相同数字
  9. echo ** 形如:3 4 5 6 7 9 9 9 10 10

  10. :begin
  11. echo.
  12. echo =========================================================
  13. set /p s=请输入:
  14. for /f "tokens=1-11" %%i in ("%s%") do (
  15.         set a0=%%i
  16.         set a1=%%j
  17.         set a2=%%k
  18.         set a3=%%l
  19.         set a4=%%m
  20.         set a5=%%n
  21.         set a6=%%o
  22.         set a7=%%p
  23.         set a8=%%q
  24.         set a9=%%r
  25.         set b0=%%s
  26.         rem 检查参数个数
  27.         call :countNumber !a0! !a1! !a2! !a3! !a4! !a5! !a6! !a7! !a8! !a9! !b0!  
  28.         if not !count!==10 (
  29.                 echo 格式错误:输入个数不对,请重新输入!
  30.                 goto :begin
  31.         ) else (
  32.                 rem 检查参数是否都是数字
  33.                 call :checkNumber !a0! !a1! !a2! !a3! !a4! !a5! !a6! !a7! !a8! !a9!
  34.                 if not !allNumberFlag!==true (
  35.                         echo 格式错误:存在非数字,请重新输入!
  36.                         goto :begin
  37.                 ) else (
  38.                         rem 检查前五个数字是否是顺子
  39.                         set /a tmp1=!a0!+1
  40.                         set /a tmp2=!a1!+1
  41.                         set /a tmp3=!a2!+1
  42.                         set /a tmp4=!a3!+1
  43.                         set flag1=false
  44.                         if !tmp1!==!a1! (
  45.                                 if !tmp2!==!a2! (
  46.                                         if !tmp3!==!a3! (
  47.                                                 if !tmp4!==!a4! (
  48.                                                         set flag1=true
  49.                                                 )
  50.                                         )
  51.                                 )
  52.                                
  53.                         )
  54.                         if not !flag1!==true (
  55.                                 echo 格式错误: 前五个数字不是顺子
  56.                         ) else (
  57.                                 rem 检查第 6、7、8个数字是否相等
  58.                                 set flag2=false
  59.                                 if !a5!==!a6! (
  60.                                         if !a6!==!a7! (
  61.                                                 set flag2=true
  62.                                         )
  63.                                 )
  64.                                 if not !flag2!==true (
  65.                                         echo 格式错误: 第6、7、8个数字不相等
  66.                                 ) else (
  67.                                         rem 检查第 9、10个数字是否相等
  68.                                         if not !a8!==!a9! (
  69.                                                 echo 格式错误: 第9、10个数字不相等
  70.                                         ) else (
  71.                                                 echo 输入正确!
  72.                                         )
  73.                                 )
  74.                         )
  75.                 )
  76.         )
  77. )       

  78. rem 是否重来?
  79. echo.
  80. set /p redo=是否重来? (y or n)
  81. if /i "%redo%"=="y" goto :begin
  82. echo 请按任意键退出...
  83. pause>nul
  84. goto :eof


  85. rem 定义函数:判断输入数字的个数
  86. :countNumber
  87. set count=0
  88. :loop1
  89. if not "%1"=="" (
  90.         set /a count+=1
  91.         shift
  92.         goto :loop1
  93. ) else (
  94.         goto :eof
  95. )


  96. rem 定义函数:判断输入的是否都是数字
  97. :checkNumber
  98. set allNumberFlag=true
  99. :loop2
  100. set n=%1
  101. if not "%n%"=="" (
  102.         rem 判断是否为数字
  103.         for /f "delims=1234567890" %%a in ("%n%@") do if "%%a"=="@" (set isNumber=true) else (set isNumber=false)
  104. ) else (
  105.         rem 如果为空,则所有参数都检查过了,退出
  106.         goto :eof
  107. )
  108. if %isNumber%==true (
  109.         rem 如果是数字,则继续检查下一个参数
  110.         shift
  111.         goto :loop2
  112. ) else (
  113.         rem 如果检查到一个非数字,则退出
  114.         set allNumberFlag=false
  115.         goto :eof
  116. )

复制代码

评分

参与人数 1PB +12 技术 +1 收起 理由
cjiabing + 12 + 1 难能可贵,学习认真,继续加油!~

查看全部评分

发表于 2012-4-27 01:31:46 | 显示全部楼层
交第一套答案
1

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

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

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

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

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

评分

参与人数 1PB -6 收起 理由
cjiabing -6 可以

查看全部评分

发表于 2012-4-27 02:05:11 | 显示全部楼层
回复 290# xhhivi


    建议安装微软官方的例子把tokens写在delims的前面

评分

参与人数 1PB +6 收起 理由
cjiabing + 6 还是建议tokens放在delims的前面。谢谢指点 ...

查看全部评分

发表于 2012-4-27 22:06:11 | 显示全部楼层
回复 291# gawk


    我是按坛里教程的顺序写的。。。。。
发表于 2012-4-27 22:49:05 | 显示全部楼层
回复 292# xhhivi


    论坛的教程也是人写的,不能盲从,要批判。
发表于 2012-5-24 13:07:44 | 显示全部楼层
真的是非常不错的内容,谢谢了
发表于 2012-9-5 11:33:53 | 显示全部楼层
第二道 B1题
@echo off
for /f "tokens=1,2,3,4 delims= " %%i  in (1.txt) do (echo %%i &echo %%j &echo %%k &echo %%l)
pause>nul
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 22:46 , Processed in 0.032272 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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