|
本帖最后由 2010techon 于 2022-6-15 02:51 编辑
你这个用法除了第一条用的合理,后面的用法不对。。。
- endlocal &set /a %1=1%d2:~0,3%-1000
复制代码 for是一个语句块,命令行对此有些特殊处理,比如你在里面用endlocal就会立即生效,后面就没法使用d2这个变量了。。。你可以这么用:
- :#Test2
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ("%2") do (
- set d2=%%a000
- for %%z in (!d2!) do endlocal&echo,d2==%%z&set /a %1=1%%z-10000
- rem 或者
- rem for /f %%z in ('call echo,%%d2%%') do endlocal&echo,d2==%%z
- rem 但是这时你没法使用变量截取功能
- goto :eof
- )
- goto :eof
复制代码
你需要仔细理解一下 setlocal 和 endlocal 的功能,setlocal 设置一个独立的变量空间
在此之后设置的变量在下一次 endlocal 之前可以使用,超出范围就不能用了。
独立语句行上的 endlocal &set。。。是个特殊情况。
|
|