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

批处理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语句的执行流程。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

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

A2:条件同A1,要求最后只显示net这个字符串。目的:了解for语句的执行流程。   
@echo off
for %%A in (net) do echo %%A
pause

TOP

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

@echo off
set "str=I love,bbs;bathome=net"
for /f "tokens=2 delims==" %%i in ("%str%") do echo %%i
pause>nul

TOP

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

TOP

A1:
@echo off
set str=I love,bbs;bathome=net
for %%i in (%str% ) do echo %%i
pause
A2:
@echo on
set str=I love,bbs;bathome=net
for %%i in (%str% ) do if "%%i" EQU "net" echo %%i
pause

TOP

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

TOP

A1
@echo off
set "str=I love,bbs;bathome=net"
for /f "tokens=1-5 delims=,;= " %%i in ("%str%") do (
        echo %%i %%j %%k %%l %%m
)
pause>nul
A2
@echo off
set "str=I love,bbs;bathome=net"
for /f "tokens=2 delims==" %%i in ("%str%") do (
        echo %%i
)
pause>nul

TOP

本帖最后由 LJY4.0 于 2022-7-28 09:51 编辑

回复 1# namejm
A1
  1. for %%a in (I love,bbs;bathome=net) do (echo %%a)
复制代码
A2
  1. set str=I love,bbs;bathome.net
  2.     for %%a in (%str%) do set i=%%a
  3.     echo %i%
  4.     pause
复制代码
https://pc.woozooo.com/mydisk.php

TOP

检查下我这个吧:
rem  A1:假设令 set str=I love,bbs;bathome=net,请分别显示出I、love、bbs、bathome和net这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
set str=I love,bbs;bathome=net
for %%i in (%str%) do  
pause&&exit


rem A2:条件同A1,要求最后只显示net这个字符串。目的:了解for语句的执行流程
set str=I love,bbs;bathome=net
for %%i in (%str%) do (
        echo %%i>kbc.txt
        findstr "net" kbc.txt
)
pause&&exit
活到老学到老

TOP

set str=I love,bbs;bathome=net && @for /f "tokens=1-5 delims=,;=" %i in ("%str%") do @echo %i %j %k %l

TOP

第一题:
照葫芦画瓢
@echo off
set str=I love,bbs;bathome=net
for %%i in (%str%) do echo "%%i"
pause

第二题还没学会

TOP

练习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 set str2=%%i
echo %str2%
pause

TOP

@echo off
echo.新手试题上路中^^_^^……
set str=I love,bbs;bathome=net
for /f "tokens=1-5 delims=;=, " %%i in ("%str%") do echo %%i %%j %%k %%l %%m
:: 发现delims=;=,  里边的空格必须放在最后,且放在 TOKENS后,如果没有空格可以随便写
pause>nul
for /f "delims== tokens=2" %%i in ("%str%") do echo %%i
pause>nul
::
书山有路勤为径,学海无涯苦作舟

TOP

A1:假设令 set str=I love,bbs;bathome=net,请分别显示出I、love、bbs、bathome和net这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
  1. @echo off
  2. set str="I love,bbs;bathome=net"
  3. for /f "tokens=1,2,3,4,5 delims=,;= " %%i in ( %str% ) do (
  4. echo %%i
  5. echo %%j
  6. echo %%k
  7. echo %%l
  8. echo %%m
  9. )
  10. pause>nul
复制代码
A2:条件同A1,要求最后只显示net这个字符串。目的:了解for语句的执行流程。
  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>nul
复制代码

TOP

@echo off
setlocal enabledelayedexpansion
set str=I love,bbs;bathome.net
for %%i in (%str%) do (
set "bb=%%~xi" 2>null
echo.%%~ni
set /a "cc=%%~xi" 2>null&&echo.!bb:~1!
)
pause

TOP

返回列表