Jump to content

  • Log In with Google      Sign In   
  • Create Account

Batch files question, namely assigning values correctly


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 BloodOrange1981   Members   -  Reputation: 242

Like
0Likes
Like

Posted 05 July 2013 - 12:03 AM

Hi all.

 

I have a batch file where I run files listed in a text file through an audio codec. The text file is set out as follows:

BGM_Name	    file	flag	LoopStart	 Length				
title		    7001	0x01	1810432	         5921928; 
map                 7552	0x01	0073664	         4997136; 

There are many more listings in the real file. The parts I`m interested in are the loopstart and the length properties, as the audio format I`m dealing with encodes loop starts and lengths internally and these are the sample counts from the start of the file. 

 

The codec is run at the command line as follows with command line arguments:

codec loopstart loopend input output

so loopend is obviously the LoopStart plus the Length.

 

The batch file I use to process all the files is as follows

for /f "tokens=1-5" %%l in (test.txt) do (
  set /a endloop1=%%p
  set /a endloop2=%%q
  set /a endloop = endloop1 + endloop2
  codec -loop %endloop1% %endloop% *input and output file names omitted for the example*
)

%%p is the value of loopStart and %%q is the length, and even though a fair few files are processed correctly and even though I`ve checked via using @echo that the values of p and q change each time the values aren`t always set to endloop1 and endloop2 so the values from the previous iteration are used and thusly the audio file is encoded incorrectly and during gameplay goes into jarring loops. 

 

Can anyone explain why endloop1 and endloop2 sometimes don`t get assigned the correct val even if p and q are set correctly?

 

Thanks in advance



Sponsor:

#2 Dave Hunt   Crossbones+   -  Reputation: 2478

Like
0Likes
Like

Posted 05 July 2013 - 09:07 PM

Shouldn't you be using o and p instead of p and q? The tokens would be stored in l, m, n, o, and p.



#3 BloodOrange1981   Members   -  Reputation: 242

Like
0Likes
Like

Posted 07 July 2013 - 07:10 PM

Sorry ,that was just a typo as I`ve simplified the example. However, during running as I said, I had the read values of o and p echoed to the screen and they looked fine, but they weren`t being assigned to the variables correctly...if I used the values of o and p directly their ascii value would be used and not the integer value so that solution is a no-go.

 

Thanks for the reply



#4 Dave Hunt   Crossbones+   -  Reputation: 2478

Like
1Likes
Like

Posted 09 July 2013 - 05:34 PM

Make sure you don't have extra spaces in this line:

 

    set /a endloop = endloop1 + endloop2

 

It should be:

 

    set /a endloop=endloop1+endloop2

 

Also, numeric values starting with a leading '0' will be treated as octal, so it's possible that some of your lines contain values with leading '0's and digits greater than 7, which would result in an error. I noticed your "map" line has a LoopStart value with leading '0's...

 

Other than that, I don't see anything wrong with your script.



#5 BloodOrange1981   Members   -  Reputation: 242

Like
0Likes
Like

Posted 10 July 2013 - 12:28 AM

Thanks Dave, I`ll try out your suggestion!



#6 BloodOrange1981   Members   -  Reputation: 242

Like
0Likes
Like

Posted 10 July 2013 - 03:55 AM

Well, I`m still having errors. I`ve changed the script and the txt file, I`m using a compact test file. The batch file is now as follows:

@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

And test.txt in its entirety is

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

for some reason the endloop values use the numbers from the last line of the text file over and over! 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

etc

It`s driving me crazy!






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS