WAD Variable name gets changed within FOR loop

Jun 24, 2008
223
0
Siegen, Germany
The attached batch file (x.btm) shows the attached PNG file's (002.png) results. System: Windows 7 64 bit, TCC 15.01.51.

The variable's (%arc%) name gets changed within the loop round-robin-wise. I know, it's the ")" within the password, but: no warning message ("wrong syntax
 

Attachments

  • x.btm
    190 bytes · Views: 64
  • 002.png
    002.png
    119.4 KB · Views: 68
May 20, 2008
3,515
4
Elkridge, MD, USA
Issue exists in TCC32 12.01.50 under WinXP, too.
Apparently the closing parenthesis of a group has higher priority in the parser than quotation marks. I tried to enclose the line from rar to the closing quote in back-quotes, which resulted in syntax error.
The simplest work-around is the use of DO/ENDDO; works without any other change. However, I suspect the ECHO in the COPY, RAR and DEL commands is for debugging, not part of the working code, and I use 7z for compression, so I did not test that way.
I had to convert the attached form of X.BTM from Unix to MS format - my editor requires CR/LF, not NL. Also, for testing or support a simpler example (e.g., no regex) is sufficient.
 

rconn

Administrator
Staff member
May 14, 2008
12,344
149
The attached batch file (x.btm) shows the attached PNG file's (002.png) results. System: Windows 7 64 bit, TCC 15.01.51.

The variable's (%arc%) name gets changed within the loop round-robin-wise. I know, it's the ")" within the password, but: no warning message ("wrong syntax


This doesn't have anything to do with FOR (FOR just makes it more obvious). The problem is with the command group parsing, which doesn't consider a quoted right paren to be "protected". This results in some of the variables in the command group being expanded before the remainder of the variables get expanded as each command in the group is executed.

The simple solution is not to use FOR (a thoroughly dreadful command, which exists solely for CMD compatibility). DO does everything far, far better. The more complicated solution is for me to break existing syntax for the sake of handling quoted )'s, which I'm reluctant to do without knowing how far-ranging an impact it will have.
 
Similar threads
Thread starter Title Forum Replies Date
vefatica Array name in a variable? Support 3
I "IF" command in a variable does not expand redirection variable name Support 0
D Parsing an array variable to an array does not work Support 5
sully9 How to? Unexpected %DATE% CMD variable format (vs DATE /T format) in CMDebug Support 1
P Inserting string into a variable. Support 3
vefatica Setting array variable ignores leading spaces (and @execarray doesn't) Support 4
Joe Caverly Set a batch variable (%1 - %n) when TCC is executing a batch file Support 5
R Difference between TCC and CMD: variable names with hyphens Support 4
Joe Caverly Get a variable type Support 2
M How to set Path variable for non-executable file extensions in 4DOS Support 8
rps For loop internal %_for_files variable? Support 2
A How to safely print variable's value without quotes? Support 9
nikbackm TCC 20 variable expansion bug Support 6
X How to set %_INIREAD result to variable Support 5
Charles Dye _USBS variable Support 2
BeechComer Debugger: how to set %1 variable? Support 3
Mordachai Variable followed by function constantly failing... Support 5
T Variable indirection for arrays Support 1
Mike Hall Unexpected "Variable loop" in IF condition Support 10
vefatica If there's no PATH variable ... Support 5
C Maximum length for a variable Support 8
D WAD Internal variable _cpu is undefined Support 2
fpefpe How to? Global variable set /v Support 4
I Change value of a variable while debugging Support 3
J Variable setting regression in tcc17 ? Support 5
Jay Sage WAD Variable _LOGFILE Not Working Support 2
D Fixed Change in behavior of variable expansion between 16 and 17 Support 3
rps Fixed Using last argument variable ! Support 5
Jay Sage Brackets Around Variable Names Support 11
D Internal variable _tctabs within TCExit Support 9
vefatica WAD Nested variable expansion in PDIR's @function[*]? Support 13
J Set environment variable from stdout of command Support 3
nickles Passing a variable to a command w/o adding it to the local environment Support 7
nikbackm FUNCTION with variable number of arguments Support 17
rfaquino WAD Apparently a bug when expanding environment variable %ProgramFiles(x86) Support 2
S WAD %_do_errors does not report errors when loop control variable type is not directory entry Support 1
B WAD environment variable in TCC.exe Support 2
Frank watch an array variable in ide/bdebugger Support 2
vefatica Conditional expressions in a variable? Support 2
CWBillow UNSET a Variable Support 7
M Updating environment variable from C++ fails erratically in version 14... Support 57
Frank problem with environment variable x86 vs. x64 Support 2
Charles Dye Unbalanced parentheses in variable expansion Support 12
D WAD Multiple TEE causese weird variable scoping? Support 7
H Variable not expanding with detach Support 3
fpefpe volatile variable Support 5
T Bug in variable expansion Support 4
S New "home" variable parsing issue Support 1
H variable programfiles(x86) loses space Support 1
nikbackm Command line evaluation question - variable inside parenthesis Support 7

Similar threads