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