尽管被阅读,我的批处理文件仍未使用正确的值

时间:2013-07-12 04:34:22

标签: batch-file

我遇到了一个批处理文件的问题,我用它来处理大量的.wav音乐文件。编码格式是在其中编码循环起点和终点。

@echo off
@echo -------CONVERSION---------
for /f "tokens=1-5" %%l in (test.txt) do (
  @echo %%n.wavを%%ni.fcoへ変換中です
  @echo %%o %%p
  set /a endloop1=%%o
  set /a endloop2=%%p
  set /a endloop=endloop1+endloop2
  @echo %endloop1% %endloop2% %endloop%
  contool -e -br 144 -loop %endloop1% %endloop% ed%%n.wav ed%%n.fco

我正在读取整个值的test.txt文件是

bgmtbl BGM_Title    7552 73664   4997136    
bgmtbl BGM_GameOver 7534 22464   4014400    
bgmtbl BGM_Midtown  7101 773184  3718720
bgmtbl BGM_Cross_1  7102 112838  5827154

第四个和第五个值是我需要的值 - 循环起始点和循环长度

由于某种原因,endloop值反复使用文本文件最后一行的数字! e.g

7552.wavを7552i.fcoへ変換中です
73664 4997136
112838 5827154 5939992
your parametter doesn't satisfy under the condition
0<= loopstart(112838) <= loopend(5939992) < Total Sample(5118208) element=0/1

7534.wavを7534i.fcoへ変換中です
22464 4014400
112838 5827154 5939992
your parametter doesn't satisfy under the condition
0<= loopstart(112838) <= loopend(5939992) < Total Sample(4125696) element=0/1

请帮助,这非常令人困惑!

2 个答案:

答案 0 :(得分:3)

另一种可能性:

@echo off &setlocal
for /f "tokens=1-5" %%l in (test.txt) do (
  echo %%n.wavを%%ni.fcoへ変換中です
  echo %%o %%p
  set /a endloop1=%%o
  set /a endloop2=%%p
  set /a endloop=%%o+%%p
)
echo %endloop1% %endloop2% %endloop%

此处您不需要delayed expansion。第一次访问%variables%是在for代码块结束之后。

答案 1 :(得分:2)

@echo off
@echo -------CONVERSION---------
setlocal enableDelayedExpansion
for /f "tokens=1-5" %%l in (test.txt) do (
  @echo %%n.wavを%%ni.fcoへ変換中です
  @echo %%o %%p
  set /a endloop1=%%o
  set /a endloop2=%%p
  set /a endloop=!endloop1!+!endloop2!
  @echo !endloop1! !endloop2! !endloop!
  contool -e -br 144 -loop !endloop1! !endloop! ed%%n.wav ed%%n.fco
)

更多信息:http://www.robvanderwoude.com/variableexpansion.php