[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这就是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来进行延迟,但是为什么下面这段代码缺少了其中任何一个就不行啊?
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=abcdefghijklmnopqrstuvwxyz0123456789"
  3. set "code=jpg txt bat exe wma mp3"
  4. md test&cd test
  5. for /l %%a in (1,1,20) do (
  6.     for /l %%b in (1,1,9) do (
  7.           set /a a=!random!%%36
  8.           call,set "var=!var!%%str:~!a!,1%%"
  9.      )
  10.     set /a b=!random!%%6+1&call :lp
  11.     set "var="
  12. )
  13. goto :eof
  14. :lp
  15. for /f "tokens=%b%" %%c in ("%code%") do echo.>!var!.%%c
复制代码

TOP

返回列表