1

我在编写批处理文件时遇到问题,该批处理文件是使用工具处理大量 .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 值一遍又一遍地使用文本文件最后一行的数字!例如

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

ETC

请帮忙,这很令人困惑!

4

2 回答 2

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 代码块结束之后。

于 2013-07-12T07:43:05.880 回答
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

于 2013-07-12T06:19:51.027 回答