代码之家  ›  专栏  ›  技术社区  ›  HCJ

win cmd中的批处理脚本循环

  •  1
  • HCJ  · 技术社区  · 2 年前

    我需要在每个目录中合并多个“.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

    1 回复  |  直到 2 年前
        1
  •  1
  •   Itagaki Fumihiko    2 年前

    使用延迟环境变量展开

    @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
        )
    )