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

批处理for的嵌套循环

先来看小弟的一段“呆马”:
@if not defined dbug echo off
set v=a;b;c;d;e
echo %v%>v.txt
for /l %%a in (1,1,5) do (
for /f "tokens=%%a delims=;" %%i in (v.txt) do echo %%i

运行结果:
%a delims=;" was unexpected at this time.
%a delims=;" was unexpected at this time.
%a delims=;" was unexpected at this time.
%a delims=;" was unexpected at this time.
%a delims=;" was unexpected at this time.

看来"tokens=%%a"是不支持for中嵌套的变量的,于是乎,我改为:

@if not defined dbug echo off
setlocal EnableDelayedExpansion
set i=0
set v=a;b;c;d;e
echo %v%>v.txt
for /l %%a in (1,1,5) do (
set i=%%a
echo !i!
for /f "tokens=%i% delims=;" %%i in (v.txt) do echo %%i
)
运行结果:
1
delims=;" was unexpected at this time.
2
delims=;" was unexpected at this time.
3
delims=;" was unexpected at this time.
4
delims=;" was unexpected at this time.
5
delims=;" was unexpected at this time.



还是不行啊,快来帮帮我吧,高手们!

3楼很强啊,我已经琢磨了几天了,谢!
不过,您好像没有加入判断推出,这个程序执行到最后一次的时候是for /f "tokens=空 delims=;" %%i in (v.txt) do echo %%i
所有我想把这个case结了,加了个判断语句,但是没有起到作用(就是判断%%a循环到最后一步,推出循环),让我们一起来完善这个case吧。
@if not defined dbug echo off
set v=a;b;c;d;e
echo %v%>v.txt
for /l %%a in (1,1,5) do call :aa %%a
:aa
for /f "tokens=%1 delims=;" %%i in (v.txt) do echo %%i
if "%1"=="5" goto :end
:end

TOP

大家可以试一下,7楼是对的,我的那个也错了,大家可以运行一下,我就不截图了,case closed,感谢大家!

TOP

返回列表