本帖最后由 qixiaobin0715 于 2024-9-26 09:52 编辑
回复 12# delab-1
还是以实例自己来观察的好。
1.把代码第7行的for循环摘出来,改造成易于理解的形式。在下面代码中,我需要提取b的值“2”,应当如何处理呢?可以在最后面设置变量str,使之延后显示,也就是说当变量str的值等于“b”时,下一个循环中,%%~i的值就是"2",示范代码如下: | @echo off | | setlocal enabledelayedexpansion | | for %%i in (a="1" b="2" c="3") do ( | | echo,!str! | | echo,%%~i | | if /i "!str!"=="b" ( | | set b=%%~i | | echo,********* b=%%~i | | ) | | echo,--------------------- | | echo, | | set "str=%%~i" | | ) | | pauseCOPY |
要显示的内容我都做了特殊标记。
2.这个问题你需要补习一下变量设置方面的知识,还是举一个例子来自己观察一下吧: | @echo off | | setlocal enabledelayedexpansion | | for /l %%i in (1,1,9) do ( | | set str=!str!,%%i | | echo,!str! | | ) | | pauseCOPY |
请观察每次循环,变量str值的变化情况。
3.把前面2个问题搞清楚了,这个问题仔细想一想,也就差不多能够想通了。
关于第1条所说的“延后显示”的问题,这里也给出一个实例代码,每组显示中,前一行 为变量重新设置前的值,后一行 为变量重新设置后的值,看看是否是错位显示: | @echo off | | setlocal enabledelayedexpansion | | for /l %%i in (1,1,5) do ( | | echo,!str! | | set str=%%i | | echo,!str! | | echo,------------- | | echo, | | ) | | pauseCOPY |
|