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

批处理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更新]

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

@echo off
set "var=bbs bathome.net"
set var=%var:.= %
for %%i in (%var%) do @echo %%i
pause

@echo off
for /f "delims=" %%i in (test.txt) do @echo %%i
pause

@echo off
for /f "tokens=2" %%i in (test.txt) do @echo %%i
pause

@echo off
set "var=床前明月光   疑是地上霜   举头望明月   低头思故乡"
for %%i in(%var%) do @echo %%i
pause

@echo off
for /f %%i in ('dir /s /b') do (
        if "%%~xni" equ "*mplayer*" echo %%~di & echo %%~ni & echo %%~xi
)
pause>nul

@echo off
for /l %%i in (100 -2 0) do (
        set /a num+=%%i
)
echo %num%

@echo off
for /f "delims=:" %%i in ('ipconfig ^| find "ip address"') do @echo %%j
pause>nul

TOP

@echo off
set var="bbs bathome.net"
set var=%var:.= %
set var=%var:"=%
for %%i in (%var%) do echo %%i
pause>nul

TOP

第三题
@echo off
set var=bbs bathome.net
echo %var%
for /f "tokens=1,2" %%a in ("%var%") do (echo %%a&set aab=%%b)
for /f "delims=. tokens=1,2" %%a in ("%aab%") do (echo %%a&echo %%b)
pause >nul

TOP

第二套 b2
  1. @echo off
  2. for /r c:/ %%i in (*myplayer*) do (
  3. echo %%~pi
  4. echo %%~ni
  5. echo %%~xi
  6. )
  7. pause
复制代码

TOP

第二套b1
  1. @echo off
  2. set poem="床前明月光   疑是地上霜   举头望明月   低头思故乡"
  3. for /f "tokens=1,2,3,4" %%a in ("床前明月光   疑是地上霜   举头望明月   低头思故乡") do (
  4. echo %%a
  5. echo %%b
  6. echo %%c
  7. echo %%d
  8. )
  9. pause
复制代码

TOP

2 5 8
  1. @echo off
  2. type test.txt
  3. echo.
  4. for /f "tokens=2 delims= " %%a in (test.txt) do (
  5. echo %%a
  6. )
  7. endlocal
  8. pause
复制代码

TOP

bbs bathome.net
  1. @echo off
  2. for /f "tokens=1,2,3 delims=. " %%a in ("bbs bathome.net") do (
  3. echo %%a
  4. echo %%b
  5. echo %%c
  6. )
  7. endlocal
  8. pause
复制代码

TOP

1,3,5...99
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set str=
  4. for /l %%i in (1 2 99) do (
  5. set tempstr=%%i
  6. set "str=!str! !tempstr!"
  7. )
  8. echo %str%
  9. endlocal
  10. pause
复制代码

TOP

显示1到100.
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set str=
  4. for /l %%i in (1 1 100) do (
  5. set tempstr=%%i
  6. set "str=!str! !tempstr!"
  7. )
  8. echo %str%
  9. endlocal
  10. pause
复制代码

TOP

第二套_B1:分行显示李白的古诗《静夜思》:“床前明月光   疑是地上霜   举头望明月   低头思故乡”
  1. @echo off
  2. for %%i in (床前明月光   疑是地上霜   举头望明月   低头思故乡) do echo %%i
  3. pause
复制代码
第二套_B2:搜索系统盘(如C:\)下包含字符“mplayer”的所有文件(系统播放器),并分别显示路径名、文件名和后缀名。【C盘里没这个,暂时没做】

第二套_B3:显示递减数列:100、98、96、……、4、2、0,并求和。
  1. @echo off
  2. for /l %%i in (100,-2,0) do (
  3. echo %%i
  4. set /a sum+=%%i
  5. )
  6. echo %sum%
  7. pause
复制代码
第二套_B4:从句子中提取“**大**”这个词:“穿了裙子,不等于说可以。”加拿大**的“如果不想被强奸,就不要把自己打扮得像**”言论引发了世界性的**。7月31日,继加拿大、美国、英国、澳大利亚、巴西、荷兰、韩国之后,印度新德里也举行了“**大**”。
  1. @echo off
  2. echo “穿了裙子,不等于说可以。”加拿大**的“如果不想被强奸,就不要把自己打扮得像**”言论引发了世界性的**。7月31日,继加拿大、美国、英国、澳大利亚、巴西、荷兰、韩国之后,印度新德里也举行了“**大**”。>1.txt
  3. for /f "tokens=5 delims=“”" %%i in (1.txt) do echo %%i
  4. pause
复制代码
第二套_B5:由“ipconfig”命令获得网络配置信息,请提取 IP 地址“192.168.1.100”。也可将以下内容保存为文本进行。(已保存至IP.txt中)
Ethernet adapter 本地连接:
        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 192.168.1.100
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.1.1
::由ipconfig命令获得以上网络配置信息,请提取 IP 地址。
  1. @echo off
  2. for /f "tokens=2 delims=:" %%i in (IP.txt) do echo %%i&&pause
  3. pause
复制代码

TOP

第一题:
  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,100) do echo %%i
  3. pause
复制代码
第三题:
  1. @echo off
  2. for /f "tokens=1-3 delims=. " %%i in ("bbs bathome.net") do (
  3. echo %%i
  4. echo %%j
  5. echo %%k
  6. )
  7. pause
复制代码
第四题_1:
  1. @echo off
  2. for /f "delims=" %%i in (test.txt) do echo %%i
  3. pause
复制代码
第四题_2:
  1. @echo off
  2. for /f "tokens=2" %%i in (test.txt) do echo %%i
  3. pause
复制代码

TOP

第二套
B1
@echo off
for /f "tokens=1 delims= " %%i in ("床前明月光 疑是地上霜 举头望明月 低头思故乡") do echo %%i
for /f "tokens=2 delims= " %%j in ("床前明月光 疑是地上霜 举头望明月 低头思故乡") do echo %%j
for /f "tokens=3 delims= " %%k in ("床前明月光 疑是地上霜 举头望明月 低头思故乡") do echo %%k
for /f "tokens=4 delims= " %%l in ("床前明月光 疑是地上霜 举头望明月 低头思故乡") do echo %%l
pause>nul

B2
@echo off
for /r "c:\" %%i in (*mplayer*) do echo %%i
pause>nul

B3
@echo off
setlocal enabledelayedexpansion
for /l %%i in (100,-1,0) do (
        echo %%i
        set /a m=m+%%i
)
echo 总数是:%m%
pause>nul

B5
@echo off
ipconfig /all | find "IPv4"
pause>nul

TOP

第一套
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

4
@echo off
for /f "tokens=1-3 delims=        " %%i in (a.txt) do echo %%i %%j %%k
pause>nul

@echo off
for /f "tokens=2 delims=        " %%i in (a.txt) do echo %%i
pause>nul

TOP

本帖最后由 buyiyang 于 2022-3-29 20:43 编辑

1、批处理运行窗口显示1~100 这100 个数字
2、批处理运行窗口显示 1、3、5.....99这50个数字
3、将 bbs bathome.net (在同一行)分成三行显示在批处理运行窗口
  1. @echo off
  2. for /l %%i in (1,1,100) do echo, %%i
  3. pause   rem 题1
  4. for /l %%i in (1,2,100) do echo,%%a
  5. pause  rem 题2
  6. for %%i in (bbs bathome. net) do echo %%i
  7. rem 题3
  8. echo,按任意键结束&pause>nul
  9. exit
复制代码
4、①将f:\test.txt内容全部显示在批处理窗口;
②只显示 2      5        8显示在批处理窗口(分三行显示,每字一行)
  1. @echo off
  2. for /f "tokens=1,2,3" %%i in (f:\test.txt) do echo %%i %%j %%k
  3. pause  rem 题1
  4. for /f "tokens=2" %%i in (f:\test.txt) do @echo %%i
  5. rem 题2,默认以空格为分割符
  6. echo,按任意键结束&pause>nul
复制代码
B1、分行显示李白的古诗《静夜思》:“床前明月光   疑是地上霜   举头望明月   低头思故乡”
B2、搜索系统盘(如C:\)下包含字符“mplayer”的所有文件(系统播放器),并分别显示路径名、文件名和后缀名
B3、显示递减数列:100、98、96、……、4、2、0,并求和
  1. @echo off
  2. for %%i in (床前明月光   疑是地上霜   举头望明月   低头思故乡) do echo %%i
  3. pause  rem B1,空格分号逗号等号为分割符
  4. for /r c:\ %%i in (*mplayer*.*) do (
  5.     echo,%%~pi
  6.     echo,%%~ni
  7.     echo,%%~xi)
  8. pause  rem B2,注意%%~pi 为%i路径,%%~ni 为%i文件名,%%~xi 为%i文件扩展后缀
  9. for /l %%i in (100,-2,0) do echo %%i & set /a n+=%%i
  10. echo,求和为:%n% ;B3
  11. pause>nul
复制代码
B4、从句子中提取“**大**”这个词:“穿了裙子,不等于说可以。”加拿大**的“如果不想被强奸,就不要把自己打扮得像**”言论引发了世界性的**。7月31日,继加拿大、美国、英国、澳大利亚、巴西、荷兰、韩国之后,印度新德里也举行了“**大**”
B5、由“ipconfig”命令获得网络配置信息,请提取 IP 地址“192.168.1.100”。也可将以下内容保存为文本进行
  1. @echo off
  2. set str=“穿了裙子,不等于说可以。”加拿大**的“如果不想被强奸,就不要把自己打扮得像**”言论引发了世界性的**。7月31日,继加拿大、美国、英国、澳大利亚、巴西、荷兰、韩国之后,印度新德里也举行了“**大**“
  3. for /f "tokens=5 delims=“”" %%i in ("%str%") do echo %%i
  4. pause   rem B4
  5. for /f "skip=2 tokens=2 delims=:" %%i in ('ipconfig^|findstr "IP Address"') do echo %%i
  6. rem B5
  7. pause>nul
复制代码

TOP

返回列表