The CMDebug, and TCC-RT installers are built with a new version of Advanced Installer.


The installer will not display the "Thank You" page when installation is complete if a silent install was requested (requires an elevated session).


Many security, performance & size improvements.


The GUI framework library has been updated.


The Scintilla edit control has been updated to version 5.3.1.


The Lexilla syntax coloring control has been updated to version 5.2.0.


There are nine new themes:


Visual Studio 2017

Visual Studio 2017 Dark

Visual Studio 2017 Blue

Visual Studio 2019

Visual Studio 2019 Dark

Visual Studio 2019 Blue

Visual Studio 2022

Visual Studio 2022 Dark

Visual Studio 2022 Blue


The CMDebug editor has improved support for very large files.


The CMDebug editor will now display document changes in the margin and in the text. In the text, inserted characters appear with colored underlines and points where characters were deleted are shown with small triangles. The margin shows a block indicating the overall state of the line. The states are modified (orange), saved (green), saved then reverted to modified (green-yellow), and saved then reverted to original (cyan). The change history can be toggled on or off with the "Options / Change History" menu entry.


The CMDebug editor now supports horizontal mouse wheel scrolling (Shift+wheel).


/BREAKPOINT:n - CMDebug startup option to set a breakpoint on the specified line in the file after opening the tab window.





Many security, performance & size improvements.


Added support for Python 3.11.


You can return the string result of a command with %{command}.  This is the same as @EXECSTR[command] but a little easier to write. For example:


dir %{echo foo}


will be translated to "dir foo".


Array variables can now return a range of values. The syntax is:




TCC-RT will return the values from arrayvar[x] to arrayvar[y] with a space between each value.


TCC-RT now supports multiple clipboards. They are numbered from CLIP0: - CLIP9:. You can still use CLIP: - it is equivalent to CLIP0:. Clipboards 1 - 9 are only accessible to TCC internal commands and variable functions. External applications will only be able to access CLIP: / CLIP0:. For example:


dir *.btm > clip1:

dir *.exe > clip3:


When an app saves something to the default clipboard (CLIP: or CLIP0:), TCC will rotate the existing clipboard entries before saving the new CLIP0. CLIP0: will become CLIP1:, CLIP1: becomes CLIP2:, etc. The old CLIP9: will be lost. If you save something to CLIP1: - CLIP9:, none of the other clipboard entries will be modified.


The TCC-RT specific clipboards (CLIP1: - CLIP9:) are always Unicode text.


See the new CLIP internal command for more details.





The help is built with a new version (8.5.0) of Help & Manual.


The eWriter file viewer has been updated to version 3.2, and the skin for the CMDebug help has been rewritten.



New Variable Functions:


@CLIPWN - Like @CLIPW, but accepts an optional clipboard number (0 - 9).


@CLIPWN[clipboard, line]


@ODBCOPEN - Open a SQL database through the ODBC driver.




@ODBCCLOSE - Close a SQL database through the ODBC driver.




@ODBCQUERY - Send a query to a SQL database through the ODBC driver. Returns the string result of the query. You must have called @ODBCOPEN or ODBC /O "name" before calling @ODBCQUERY.


@ODBCQUERY[arrayvar, "query"]


arrayvar - An array variable that receives the output of the SQL query. (You must create it with SETARRAY before calling @ODBC.)


"query" - The SQL query to execute.



Updated Variable Functions:




@CLIP has an optional second parameter (0-9) that specifies the clipboard you want to use (CLIP0: - CLIP9:). For example, to get the 5th line from CLIP7:






@FILEARRAY now supports clipboards 0 - 9.




@FILEDATE now supports HTTP & HTTPS filenames, for last write only. Wildcards are not supported (HTTP limitation).




@FILETIME now supports HTTP & HTTPS filenames, for last write only. Wildcards are not supported (HTTP limitation).




@LINE now supports clipboards 0 - 9.




@LINES now supports clipboards 0 - 9.





The default width, in pixels, of a maximized top-level window on the primary display monitor.


The value that specifies how the system is started:

0 Normal boot

1 Fail-safe boot

2 Fail-safe with network boot






The number of milliseconds a thread can go without dispatching a message before the system considers it unresponsive.



The number of milliseconds the system waits before terminating an application that does not respond to a shutdown request.



The number of milliseconds the service control manager waits before terminating a service that does not respond to a shutdown request.



Updated Commands:




Updated /F to read improperly formatted .ITERMCOLORS files.




COPY now recognizes the (invalid) syntax "copy file1+,, file1" as a (dumb) way to fool CMD into TOUCH'ing the file with the current date.  (The correct syntax is to leave off the trailing ",, file1". Or just use TOUCH.)


/BAK - If the target file exists, COPY will save it with a ".bak" extension before overwriting it. COPY will not create multiple versions of the .bak file; if you already have a file.ext.bak, it will be overwritten.


/DD - Remove any empty directories created with the /S option.




DIR now has limited support for HTTP & HTTPS filenames. DIR will display the filename, size, and date/time (for last write only). Wildcards are not supported (HTTP limitation).




LUA has been updated to version 5.4.4.




/DD - Remove any empty directories created with the /S option.




/UNELEVATED - start the new process in an unelevated session. (Only necessary if TCC is running in an elevated session and you want to start a process unelevated.)




/DD - Remove any empty directories.




Added some new Windows folders:












New Commands:




CAPTURE does video and / or audio screen capture. It supports H264, H265, VP80, VP90, MP3, FLAC, and AAC. The syntax is:


CAPTURE "filename" [/Start=n /End=n /FPS=n /HWND=n /Monitor=n /Rect=top,left,bottom,right /Video=[H264 | HEVC | VP80 | VP90] /Audio=[MP3 | AAC | FLAC] /AudioFrom="name" /C /E /P]


"filename" - The output filename (.mp4 or .asf for video; .mp3, .aac, .flac for audio)

/Start - The start time in seconds (default 0)

/End - The end time in seconds

/FPS - Frames per second (default 25)

/HWND - The window to capture

/Monitor - The monitor to capture (1 - n)

/RECT - The window rectangle to capture

/Threads - The number of threads for the video encoding (default 1, maximum 16)

/Video - Video encoding format (H264, HEVC, VP80, or VP90)

/AudioFormat - Audio encoding format (MP3, AAC, FLAC)

/AudioFrom - The friendly name of the audio source. You can use wildcards in the name; for example: /AudioFrom="HD Audio*"

/C - Capture the cursor

/P - Pause the capture

/E - End the capture


If you do not specify /End, CAPTURE will continue capturing the screen until you call it again with the /E option.


If you do not specify /HWND or /RECT, CAPTURE will capture the desktop.


CAPTURE runs in a separate thread, so it will not block the current TCC / Take Command window.




CLIP displays or modifies the 10 clipboards available in TCC (CLIP0: - CLIP9:). The syntax is:


CLIP [/C clipn: /R n /S clipn: text]


/C - Clears clipboard n


/R - Rotates the clipboards to make clipboard n the default (i.e., CLIP: / CLIP0:).

/S - Sets clipboard n to text


If you don't specify any arguments, CLIP will display the current contents of CLIP0: - CLIP9:.




Query a database through an ODBC driver. The syntax is:


ODBC [/O "connectionstring"]["Query"][/C]


/O - Send the specified connection string to the ODBC driver. This opens a persistent ODBC session.


/C - Close the ODBC session.


"query" - Executes a SQL query




Display a formatted string using the C Printf format. The syntax is:


PRINTF "format string" args ...


The arguments following the format string will be inserted in the output string according to the format type in the format string. The arguments can be variable names, variable functions, or literal strings; i.e.:


PRINTF "%s %d %x" %var1 999 %hexvar


The format type syntax is:







Left-justify within the given field width; Right justification is the default (see width sub-specifier).


Prefix the result with a plus or minus sign (+ or -) even for positive numbers. By default, only negative numbers are preceded with a - sign.


Prefix the number with zeroes (0) instead of spaces when padding is specified (see width sub-specifier).





Minimum number of characters to be printed. If the value to be printed is less than this number, the result is padded with spaces.


The width is not specified in the format string, but as an additional integer argument preceding the argument to be formatted.





For integer specifiers (d, i, o, u, x, X): precision is the minimum number of digits to be written. If the value to be written is less than precision, the result is padded with leading zeros.

For f and g specifiers: The maximum number of significant digits to be printed.


The precision is not specified in the format string, but as an additional integer value argument preceding the argument that has to be formatted.




d or i

Signed decimal integer


Unsigned decimal integer


Unsigned hexadecimal integer


Unsigned uppercase hexadecimal integer

f or g

Decimal floating point






A % followed by another % will write a single %


If you prefix a type with an L, PRINTF will insert commas as thousands separators.  For example:


PRINTF "%Ld" 123456789


will output:






A simpler way than DO or FOR to execute a counted loop. The syntax is:


REPEAT n command ...


where n is the number of times you want to repeat command.


REPEAT sets the internal command variable _repeat to the current loop counter (1 to n).