Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批量实现多个For循环_Batch File_For Loop - Fatal编程技术网

Batch file 批量实现多个For循环

Batch file 批量实现多个For循环,batch-file,for-loop,Batch File,For Loop,我尝试在批处理中实现多个for循环,如: for x=1:10 for y=x+1:10 //my code end end 我的代码是: @echo off for /l %%x in (1,1,10) do ( for /l %%y in (%%y+1,1,10) do ( //my code ) ) 但是,它不起作用。有人能帮我吗?谢谢 @echo off setlocal enableDelayedExpansion for /l %%x in (1;,;1step;,;1

我尝试在批处理中实现多个for循环,如:

for x=1:10 
for y=x+1:10
//my code
end
end
我的代码是:

@echo off
for /l %%x in (1,1,10) do (
 for /l %%y in (%%y+1,1,10) do (
  //my code
 )
)
但是,它不起作用。有人能帮我吗?谢谢

@echo off
setlocal enableDelayedExpansion
for /l %%x in (1;,;1step;,;10#=101) do (
 set /a inner=%%x+1

 @@echo ###%%x is from outer loop###

 for /l %%y in (,,,!inner!==1@==10times,9) do ( 

  @@echo -----%%y is from inner loop

 )
)
endlocal
简化的

@echo off
setlocal enableDelayedExpansion
for /l %%x in (1;1;10) do (
 set /a inner=%%x+1

 echo - %%x is produced from outer loop

 for /l %%y in (!inner!;1;10) do ( 

 echo --- %%y is produced from inner loop

 )
)

我正在用一个更简单的脚本重新发布一个解决方案

@echo off
setlocal enableDelayedExpansion
for /l %%x in (1,1,10) do (
 set /a inner=%%x+1
    for /l %%y in (!inner!,1,10) do ( 
     echo %%x, %%y
    )
)
endlocal
pause

尝试将
%%y+1,1,10
更改为
%%x+1,1,10
@Dale-将不起作用,在批处理中,您无法在
中为
定义进行数学运算。无意冒犯,但您这样写有什么原因吗?这很难理解,新手也不会有希望理解你的观点。@foxidrive-你说得对-我应该让它更简单。有时我倾向于表现出一种奇怪的幽默感……就我理解的问题而言,OP希望内部循环从
%%x+1
开始。。。
@echo off
setlocal enableDelayedExpansion
for /l %%x in (1,1,10) do (
 set /a inner=%%x+1
    for /l %%y in (!inner!,1,10) do ( 
     echo %%x, %%y
    )
)
endlocal
pause