win cmd中的批处理脚本循环

batch script loop in win cmd

我需要在每个目录中合并多个“.ts”文件。 文件结构是这样的: file structure

我试过循环代码,它在单层结构中运行良好:

for /l %%x in (1,1,24) do (
    copy /b %%x\*.ts new_%%x.ts
)
pause

我试图在运行一个双层结构中添加另一个循环,它在以下代码中不起作用:

for /l %%x in (1,24,49) do (
    for /l %%a in (%%x,1,%%x+23) do (
        copy /b %%x\%%a\*.ts \%%x\new_%%a.ts
    )
)

问题是这里的值不能求和:

%%x+23

然后我尝试在将其放入第二个循环之前计算该值:

for /l %%x in (1,24,49) do (
    set /a endvalue=%%x+23
    for /l %%a in (%%x,1,endvalue) do (
        copy /b %%x\%%a\*.ts \%%x\new_%%a.ts
    )
)

代码仍然无效。

我错过了什么吗?我该如何解决?

谢谢, CJ

使用延迟环境变量扩展

@echo off
setlocal EnableDelayedExpansion
for /l %%x in (1,24,49) do (
    set /a beginvalue=%%x
    set /a endvalue=%%x + 23
    for /l %%a in (!beginvalue!,1,!endvalue!) do (
        echo %%a
    )
)