Alias with multi line definitions not assigned

Jun 2, 2008
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


Staff member
May 14, 2008
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?


Staff member
May 14, 2008
There are only two:

%+ evaluates to &.

%= evaluates to ^.

They were only useful during the migration from / 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.
^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.