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

SignUp Now!

Alias with multi line definitions not assigned

TCC 17.00.35 x64 Windows 2008R2 [Version 6.1.7601]
TCC Build 35 Windows 2008R2 Build 7601 Service Pack 1

Using swedish keyboard and Regional and Language Options: Swedish

Alias read from file are misinterpreting multi line definitions. For example
Exit ^
*set a_Exit=%$ %+ ^
*if %zTCCProcess ne 1 *exit %$ %+ ^
*inkey /c /k"yYnN" Start TCExit.btm? (y/n) %%saAnswer %+ ^
*if "%saAnswer" eq "y" *exit %$ %+ ^
*unset /q saAnswer

When I display all aliases, alias Exit is displayed as Exit=*

Reproducible: Always.

Best regard
Berndt Berg
Not reproducible here. Anybody else seeing this?

There are a couple of minor things you might want to correct - you should have a '=' after the EXIT so TCC doesn't have to guess what is the alias alias name and what is the argument. And the pseudovar %+ is deprecated in v17 and will be eliminated in the future. But neither of those prevent your alias from being set on my system. The actual problem may be somewhere else in your alias file -- can you email your entire file to [email protected]?

If %+ is gone, that'll break a bunch of .btm files, though it will be easy enough to fix via search and replace. What will be used in its place? "&" or "&&"? Is there a published list of other pseudovars that will be eliminated?
There are only two:

%+ evaluates to &.

%= evaluates to ^.

They were only useful during the migration from command.com / 4dos to cmd.exe / 4nt / tcc. I.e., there hasn't been any reason to use them for that last 13-14 years; they just complicate your batch files and aliases, slow things down, and make life difficult for the parser.
So, rather than %=n for a newline, it'll be ^n? & will continue to join and && will continue to be logical AND?
^n is a linefeed. If you want a CRLF (newline?) use ^r^n.

Maybe I'm mincing words, but the **logical** AND is ".and.". "&&" is a conditional command separator ... execute the following command if the previous one succeeds.

Similar threads