FOR problem

Sep 13, 2016
48
0
in version 24 and 23 these lines cause a complete stop TCC and TCC-RT
in version 21 and below works without errors.

Set adminmess=%@line[t:\e-mail\system\list_adm_mess,0]
For %%iad in (%adminmess) (If %iad==%dir Set enbl=1)
 
Sep 13, 2016
48
0
Set dir=%@line[id,0]
ID file - it contains a string with the name of the user, for example, a SYSADMIN
list_adm_mess file - it contains a string with usernames, for example: sysadmin user1 user2

In all earlier versions it worked without problems.
 
May 20, 2008
9,445
63
Syracuse, NY, USA
It seems OK here, v24.02.49.
Code:
v:\winlanem> type id
sysadmin

v:\winlanem> type list_adm_mess
sysadmin user1 user2

v:\winlanem> type test.btm
Set dir=%@line[id,0]
Set adminmess=%@line[v:\winlanem\list_adm_mess,0]
For %%iad in (%adminmess) (If %iad==%dir Set enbl=1)
v:\winlanem> unset enbl

v:\winlanem> test.btm

v:\winlanem> echo %enbl
1
 
Sep 13, 2016
48
0
It seems OK here, v24.02.49.
Code:
v:\winlanem> type id
sysadmin

v:\winlanem> type list_adm_mess
sysadmin user1 user2

v:\winlanem> type test.btm
Set dir=%@line[id,0]
Set adminmess=%@line[v:\winlanem\list_adm_mess,0]
For %%iad in (%adminmess) (If %iad==%dir Set enbl=1)
v:\winlanem> unset enbl

v:\winlanem> test.btm

v:\winlanem> echo %enbl
1
This is under Windows 10 x64. I have not tried running under other versions of Windows, but I am confused by the fact that running version 21 and below all this works without errors in both Win 7 and Win 10
 
Sep 13, 2016
48
0
I understood what the problem was. When accessing files or folders that are on a network resource. I repeat that neither the hardware nor the software configuration of the computer has changed. Only new version TCC is installed. In version 21 and below, everything works, in version 23 and above - the indicated problems have appeared.


Set dir=%@line[id,0]
Set ru=HKLM\Software\WinLanEm\Users\%dir\Config
Set disk=%@REGQUERY[%ru\netpath]

rem netpath=\\192.168.102.200\channel

Set adminmess=%@line[%disk\e-mail\system\list_adm_mess,0]
For %%iad in (%adminmess) (If %iad==%dir Set enbl=1)
If isdir %disk\e-mail\system\x64\adm\%dir Set enbl=1 %+ Set enbl1=1
.........................

Iff exist %disk\%m\%dirspa\new\acc Then
Set curd=%@makeage[%_date,%_time]
set fild=%@fileage[%disk\%m\%dirspa\new\acc]
..............................
 
May 20, 2008
9,445
63
Syracuse, NY, USA
If isdir %disk\e-mail\system\x64\adm\%dir Set enbl=1 %+ Set enbl1=1
That looks like the culprit. A similar statement
Code:
if 1 == 1 echo foo %+ echo bar
with option DuplicateBugs=Yes will cause v22, v23, and v24 to stop dead (CPU = 100%). That is not the case in v21.

Change "%+" to "&" and the problem goes away.
 
Sep 13, 2016
48
0
Yes, replacing % + with & helped. And I forgot to say that CPU = 100%. Vefatica - you are a genius.
 

rconn

Administrator
Staff member
May 14, 2008
11,021
98
I learned my lesson on this one -- never, ever give the users a temporary crutch to ease the porting between command processors. (In this case, to allow running batch files in both 4DOS and 4NT. 25 years ago!)

Useless for the past 15+ years, officially deprecated 10 years ago, and I still can't stop people from using %+ ...

I've added a kludge to 24.02.50 to fix the infinite loop.
 
  • Like
Reactions: nikbackm
Sep 13, 2016
48
0
I used it from the end of the 90s, and I never thought that it should be done somehow differently)).
 
Apr 18, 2014
168
4
And at the bottom, it says this was deprecated in v17, and most support removed in v20.
I rather think that’s the point that JohnQSmith is making; that warning should be at the top, front and centre, if it’s not meant to be used any more.
 
  • Like
Reactions: nikbackm