这就是call的延迟用法,楼主可比较下下面两段代码:@echo off
set "a=1"
set "a=2"&echo %a%
pause>nul@echo off
set "a=1"
set "a=2"&call,echo %%a%%
pause>nul第一段代码显示出1,也就是第二次赋值没有成功 ...
batman 发表于 2009-2-12 23:14
请问bathman:
按照你的说明,如果有setlocal enabledelayedexpansion就不用CALL来进行延迟,但是为什么下面这段代码缺少了其中任何一个就不行啊?- @echo off&setlocal enabledelayedexpansion
- set "str=abcdefghijklmnopqrstuvwxyz0123456789"
- set "code=jpg txt bat exe wma mp3"
- md test&cd test
- for /l %%a in (1,1,20) do (
- for /l %%b in (1,1,9) do (
- set /a a=!random!%%36
- call,set "var=!var!%%str:~!a!,1%%"
- )
- set /a b=!random!%%6+1&call :lp
- set "var="
- )
- goto :eof
- :lp
- for /f "tokens=%b%" %%c in ("%code%") do echo.>!var!.%%c
复制代码
|