Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

problem with environment variable x86 vs. x64

Aug
258
4
With TCC v.14 x64 I get the expected result:

Code:
C:\Temp >ver
 
TCC  14.00.30 x64  Windows 7 [Version 6.1.7601]
 
C:\Temp >set | findstr /i /b programfiles
 
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
 
C:\Temp >echo pause `"%ProgramFiles(x86)%"` > getpf.btm
 
C:\Temp >type getpf.btm
 
pause "%ProgramFiles(x86)%"
 
C:\Temp >getpf
 
pause "C:\Program Files(x86)"
"C:\Program Files(x86)"
 
C:\Temp >

But with the x86 version it looks like this:

Code:
C:\Temp >ver
 
TCC  14.00.30  Windows 7 [Version 6.1.7601]
 
C:\Temp >set | findstr /i /b programfiles
ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)
 
C:\Temp >getpf
 
pause "C:\Program Files (x86)(x86)"
"C:\Program Files (x86)(x86)"
 
C:\Temp >

What's wrong?

edit:
oops - just did a cold reset of my brain.
Code:
pause "%[programfiles(x86)]%"
"C:\Program Files (x86)"
is ok.
 
The parentheses are not considered valid variable name characters, so the name parsing is stopped at the first '('. The remaining "(x86)" gets appended to the value returned by "%ProgramFiles" (which is different for 32-bit and 64-bit -- that's Windows, not TCC).

You need to use the %[xxx] syntax.
 
Thank you for the explanation.
... (which is different for 32-bit and 64-bit -- that's Windows, not TCC) ...
That explains the inconsistent behavior.
 

Similar threads

Back
Top