Take Command now supports a splitter window (on the horizontal scrollbar). You must enable "Splitter Windows" in the Take Command configuration dialog (Tabs window), and restart TCMD to see the splitter. (Note that it is technically impossible to display splitter console windows, so TCMD is using a lot of hand-waving, smoke, and mirrors.) The splitter window (on the right side) will not automatically scroll to the end when new output is displayed, or when you enter new commands. This allows you to scroll back in the screen buffer to review previous commands and output, and to select text from previous pages.
Take Command will check to see if your maximum allowable console window size (as set by Windows) is smaller than your Take Command tab window; if so Take Command will reduce the console font size until the console window size matches the tab window. (Requires Windows 7 or later.)
The Internet code has been substantially rewritten and ported to a new major update of the IPWorks dll's.
Updated the IDE editor to a new version of Scintilla (3.2).
The conditional tests (DO, IF, IFF, etc.) now accept ! as a synonym for NOT.
Alt-F9 will restore the original filename mask when doing filename completion. This will only work provided you haven't terminated the completion loop; i.e., by pressing anything other than tab, F8, F9, F10, or F12.
Alt-F6 will no longer open the Folder View and List View windows if they're disabled; it will toggle between the Command Input window and the active tab window.
Added a "Register for all users" option (checkbox on the register page). This option will only be enabled if you are running an elevated administrator session.
There will not be a TCC/LE 14.0.
Batch Editor / Debugger:
You can select a rectangular area by holding down the Alt key while clicking the left mouse button and dragging the mouse.
INI Directives:
CompleteAllFiles=yes|NO - Normally, TCC will only complete directories and executable files (as defined by PATHEXT) when you press Tab or F9 at the beginning of a command line. If CompleteAllFiles is set to YES, TCC will complete any matching filename. Note that if you also have CompletePaths set, you'll probably have several hundred (or thousand!) matches for any filename you enter.
SplitterWindows=NO|yes - If YES, Take Command will display a horizontal scrollbar with a splitter in each tab window.
Internal Variables:
_SERIALPORTS - Returns a space-delimited list of all of the available serial ports (COM1 - COMn).
Variable Functions:
@FILES[/H filename] - Don't count "." or ".."
@REREPLACE[ source_re, target_re, source ] - Regular expression back reference replacement.
source_re - Regular expression to apply to the source
target_re - Regular expression for back reference
source - Source string
@SERIALPORTCLOSE[ n ] - Close the serial port. "n" is the handle returned by @SERIALPORTOPEN.
@SERIALPORTFLUSH[ n ] - Flush the contents of the serial port buffer. "n" is the handle returned by @SERIALPORTOPEN.
@SERIALPORTOPEN[COMn[, baud[, parity[, bits[, flow]]]]] - Open a serial port for read & write. The parameters are:
COMn - The COM port to open (COM1 - COM9)
baud - The baud rate (110 - 256000)
parity - The parity scheme to use. This can be one of the following values:
no
odd
even
mark
space
bits - The number of bits in the bytes to transmit & receive
flow - The type of flow control to use. This can be one of the following values:
no
CtsRts
CtsDtr
DsrRts
DsrDtr
XonXoff
@SERIALPORTOPEN returns a handle to the serial port, which must be passed to the other serial port functions.
@SERIALPORTREAD[ n ] - Reads a string from the serial port. "n" is the handle returned by @SERIALPORTOPEN.
@SERIALPORTWRITE[ n, text ] - Writes a string to the serial port. "n" is the handle returned by @SERIALPORTOPEN.
@SMCLOSE[ n ] - Close a shared memory handle.
n - The shared memory handle returned by @SMOPEN
@SMOPEN[ size, name ] - Open a handle to shared memory
size - The size of shared memory (in bytes)
name - The name of the shared memory. The name can have a "Global\" or "Local\" prefix to create the object in the global or session namespace.
@SMPEEK[handle,offset,size] - Read a value from shared memory.
handle - a handle from @SMOPEN
offset - the byte offset in the buffer (decimal or hex)
size - the size of the value to read (in bytes):
1 - character
2 - short
4 - int
8 - int64
@SMPOKE[handle,offset,size,value] : Write a value to shared memory
handle - a handle from @SMOPEN
offset - the byte offset in the buffer (decimal or hex)
size - the size of the value (in bytes):
1 - character
2 - short
4 - int
8 - int64
value - the value to poke
@SMREAD[ n, offset, type, length ] - Read a string from shared memory
n - The shared memory handle returned by @SMOPEN
offset - The offset (in bytes) from the beginning of the shared memory buffer.
type - Either a to read the string as ASCII or u to write it as Unicode.
length - The length of the string (in characters) to read.
@SMWRITE[ n, offset, type, string ] - Write a string to shared memory
n - The shared memory handle returned by @SMOPEN
offset - The offset (in bytes) from the beginning of the shared memory buffer.
type - Either a to write the string as ASCII or u to write it as Unicode.
string - The string to write.
@TRIMALL[string] - Remove leading and trailing spaces and tabs, and extra internal spaces and tabs.
Updated Commands:
/L - Set or display the attributes of the symbolic link versus the target of the symbolic link.
If you don't specify any arguments, COPY will display the command dialog.
Added support for regular expression back references in the target name. If you are using back references, you must use a regular expression in the source name. The syntax is:
copy ::filename ::target
See the help for details about back references.
If you don't specify any arguments, DEL will display the command dialog.
If you don't specify any arguments, DESCRIBE will display the command dialog.
/C - copy the value from another variable / alias / function. The syntax is:
eset /c var1 var2
where "var1" is the variable whose value you want to copy, and "var2" is the variable (new or existing) that you want to update.
If you don't specify any arguments, GLOBAL will display the command dialog.
If you don't specify any arguments, JABBER will display the command dialog.
If you don't specify any arguments, MD will display the command dialog.
If you don't specify any arguments, MKLINK will display the command dialog.
If you don't specify any arguments, MKLNK will display the command dialog.
If you don't specify any arguments, MOVE will display the command dialog.
Added support for regular expression back references in the target name. If you are using back references, you must use a regular expression in the source name. The syntax is:
move ::source ::target
See the help for details about back references.
Now supports multiple nested *'s in a @ function specification.
If you don't specify any arguments, PLAYSOUND will display the command dialog.
If you don't specify any arguments, RD will display the command dialog.
If you don't specify any arguments, REN will display the command dialog.
Added support for regular expression back references in the target name. If you are using back references, you must use a regular expression in the source name. The syntax is:
ren ::source ::target
See the help for details about back references.
If you don't specify any arguments, SELECT will display the command dialog.
If you don't specify any arguments, SENDHTML will display the command dialog.
If you don't specify any arguments, SENDMAIL will display the command dialog.
/RO var=value - set a read-only variable. Once you've set the variable, you cannot change it (or unset it). Only environment variables can be read-only (not registry variables or array variables).
/R filename arrayname - read a file into a (1-dimensional) array. (SETARRAY will determine the required size of the array.)
/Desktop=desktopname - specify the desktop where you want to start the application.
/NODE n - Start the program using the specified NUMA node (n is a decimal integer).
/TABNA - start a new Take Command tab window, but keep the current tab active.
If you don't specify any arguments, SYNC will display the command dialog.
If you don't specify any arguments, TAR will display the command dialog.
Accepts an optional command to run. This is the equivalent of "timer on & command & timer off". The syntax is:
timer command [args]
If you don't specify any arguments, TOUCH will display the command dialog.
If you don't specify any arguments, UNTAR will display the command dialog.
If you don't specify any arguments, UNZIP will display the command dialog.
If you don't specify any arguments, ZIP will display the command dialog.
New Commands:
Monitors the OutputDebugString API call from any process. The syntax is:
DEBUGMONITOR [/C]
DEBUGMONITOR n command
DEBUGMONITOR will set the environment variable "_outputdebugstring" to the string specified in the OutputDebugString call.
Create a new desktop or switch to an existing desktop. The syntax is:
DESKTOP /C [/N] newdesktopname - create and optionally switch to a new desktop
DESKTOP desktopname - switch to an existing desktop
If you don't specify any arguments, DESKTOP will display the existing desktops.
Change the resolution (and optionally the color depth and refresh frequency) of the specified display. The syntax is:
RESOLUTION [displayname] width height [depth [frequency]]
If you don't specify any arguments, RESOLUTION will display the display devices and monitors.
Text filtering and substitution. You can specify multiple filters, which are processed in the order they appear on the command line. Do not insert any unquoted whitespace in the arguments to an option! Row and column positions start at 1.
The syntax is:
TPIPE [/input=filename] [/output=filename] [/filter=filename] [/unicode=input,output] [/save=filename] [/simple=n[u]] [/eol=input,output,length] [/line=start,increment,skipblank,dontnumberblank,format] [/insert=position,type,string] [/head=Exclude,LinesOrBytes,Count] [/tail=Exclude,LinesOrBytes,Count] [/number=type,value] [/string=type,string] [/file=type,filename] [/dup=RemoveDuplicateLines,IgnoreCase,StartColumn,Length,IncludeOne] [/comment=text] [/log=LogFileName] [/run=InputFileName,OutputFileName,"CommandLine"] [/merge=type,filename] [/split=type,SplitSize,SplitChar,SplitCharPos,SplitCharCount,SplitLines,SplitFilename ] [/grep=Type,IncludeLineNumbers,IncludeFilename,IgnoreCase,CountMatches,UTF8,PatternType,Pattern] [/replace=Type,MatchCase,WholeWord,CaseReplace,PromptOnReplace,Extract,FirstOnly,SkipPromptIdentical,Action,SearchStr,ReplaceStr] [/xml=Type,IncludeText,IncludeQuotes,MatchCase,BufferSize,Tag,Attribute,EndTag]
/input=filename
Filename to read. This can be either a disk file, include file (@filename), or CLIP:. If it is not specified, TPIPE will read from standard input.
/output=filename
Filename to write. This can be either a disk file or CLIP:. If it is not specified, TPIPE will write to standard output.
/merge=type,filename
Adds a merge type filter (merge into single output filename). The arguments are:
type:
0 Merge into filename
1 Retain lines found in filename
2 Remove lines found in filename
3 Link filter filename
filename - the filename to use
/filter=filename
Name of filter file to load (see /save=filename)
/save=filename
Saves the filter settings defined on the command line to the specified filename, and returns without executing any filters.
/unicode=input,output
Convert the file to or from Unicode. input is the encoding for the input file; output is the encoding for the output file. The possible values are:
UTF-16LE
UTF-16BE
UTF-32LE
UTF-32BE
UTF-8
ANSI
ASCII
CPnnn, where nnn is the Windows code page.
TPIPE handles files internally as UTF-8, so if you want to process a Windows UTF-16LE file, you'll need to convert it to UTF-8 first, then apply the desired filters, and convert it back to UTF-16LE.
/simple=n[u]
Adds a simple filter type. n is the type of filter to add, and for those filters that support it, u indicates that the filter will be dealing with Unicode data.
1 Convert ASCII to EBCDIC
2 Convert EBCDIC to ASCII
3 Convert ANSI to OEM
4 Convert OEM to ANSI
5 Convert to UPPERCASE
6 Convert to lowercase
7 Convert to Title Case
8 Convert to Sentence Case
9 Convert to tOGGLE cASE
10 Remove blank lines
11 Remove blanks from End of Line
12 Remove blanks from Start of Line
13 Remove binary characters
14 Remove ANSI codes
15 Convert IBM drawing characters
16 Remove HTML and SGML
17 Remove backspaces
18 Resolve backspaces
19 Remove multiple whitespace
20 UUEncode
21 Hex Encode
22 Hex Decode
23 MIME Encode (Base 64)
24 MIME Decode (Base 64)
25 MIME Encode (Quoted printable)
26 MIME Decode (Quoted printable)
27 UUDecode
28 Extract email addresses
29 Unscramble (ROT13)
30 Hex dump
32 XXEncode
33 XXDecode
34 Reverse line order
35 Remove email headers
36 Decimal dump
37 HTTP Encode
38 HTTP Decode
39 Randomize lines
40 Create word list
41 Reverse each line
42 Convert to RanDOm case
43 Extract URLs
44 ANSI to Unicode
45 Unicode to ANSI
46 Display debug window
47 Word concordance
48 Delete all
49 Restrict to each line in turn
50 Convert CSV to Tab-delimited
51 Convert CSV to XML' )
52 Convert Tab-delimited to CSV
53 Convert Tab-delimited to XML
54 Convert CSV (with column headers) to XML
55 Convert Tab-delimited (with column headers) to XML
56 Convert CSV (with column headers) to Tab-delimited
57 Convert Tab-delimited (with column headers) to CSV
58 Restrict to file name
59 Convert Word documents to text
60 Swap UTF-16 word order
61 Swap UTF-32 word order
62 Remove BOM (Byte Order Mark)
63 Make Big Endian
64 Make Little Endian
65 Compress to Packed Decimal
66 Compress to Zoned Decimal
67 Expand Binary Number to EBCDIC
68 Expand Binary Number to ASCII
69 NFC - Canonical Decomposition, followed by Canonical Composition
70 NFD - Canonical Decomposition
71 NFKD - Compatibility Decomposition
72 NFKC - Compatibility Decomposition, followed by Canonical Composition
73 Decompose
74 Compose
75 Convert numeric HTML Entities to text
76 Convert PDF documents to text
77 Restrict to ANSI files
78 Restrict to Unicode UTF16 files
79 Restrict to Unicode UTF32 files
80 Convert Excel spreadsheets to text
/eol=input,output,length
Add an EOL (end of line) conversion filter. The arguments are:
input:
0 - Unix (LF)
1 - Mac (CR)
2 - Windows (CR/LF)
3 - Auto
4 - Fixed (use the length parameter to specify the length)
output:
0 - Unix
1 - Mac
2 - Windows
3 - None
length - The line length to use if input=4
/line=StartNumber,Increment,SkipBlank,DontNumberBlank,NumberFormat
Adds a Line Number filter. The arguments are:
StartNumber - the starting line number
Increment - the amount to add for each new line number
SkipBlankIncrement - don't increase the line number for blank lines
DontNumberBlank - don't put a line number on blank lines
NumberFormat - The format to use for the line number. The format syntax is:
[-][width][.precision]d
An optional left justification indicator, ["-"]
An optional width specifier, [width] (an integer). If the width of the number is less than the width specifier, it will be padded with spaces.
An optional precision specifier [precision] (an integer). If the width of the number is less than the precision, it will be left padded with 0's.
The conversion type character:
d - decimal
/insert=position,type,string
Add an insert type filter. The arguments are:
type:
0 - Insert column
1 - Insert bytes
position - the position to insert the string
string - the string to insert
/head=Exclude,LinesOrBytes,Count
Add a head type filter (includes or excludes text at the beginning of the file). The arguments are:
Exclude - if 0, include the text; if 1, exclude it
LinesOrBytes - if 0, measure in lines; if 1, measure in bytes
Count - the number of lines or bytes to include or exclude
/tail=Exclude,LinesOrBytes,Count
Add a tail type filter (includes or excludes text at the end of the file). The arguments are:
Exclude - if 0, include the text; if 1, exclude it
LinesOrBytes - if 0, measure in lines; if 1, measure in bytes
Count - the number of lines or bytes to include or exclude
/dup=Type,IgnoreCase,StartColumn,Length,IncludeOne
Remove or show duplicate lines. The arguments are:
Type:
0 - Remove duplicate lines
1 - Show duplicate lines
IgnoreCase - if 1, ignore case during comparisons
StartColumn - The starting column for comparisons
Length - The Length of the comparison
IncludeOne - Include lines with a count of 1
/string=type,MatchCase,string
Add a string-type filter. The arguments are:
type:
0 Add left margin
1 Add header
2 Add footer
3 Add right margin
4 Remove lines
5 Retain lines
6 Remove lines matching perl pattern
7 Retain lines matching perl pattern
8 Add text side by side
9 Add repeating text side by side
10 Not Used
11 Not Used
12 XSLT transform
13 Restrict to lines from list
14 Restrict to lines NOT in list
15 Restrict to lines matching perl pattern
16 Restrict to lines NOT matching perl pattern
matchCase - case sensitive or not (where appropriate)
string - the string to use
/file=type,MatchCase,filename
Add a file-type filter. The arguments are:
type:
17 Restrict to filenames matching perl pattern
18 Restrict to filenames NOT matching perl pattern
MatchCase - If 1, do a case sensitive match (where appropriate)
filename - the filename to use
/number=type,value
Add a number-type filter. The arguments are:
type:
0 Convert Tabs to Spaces
1 Convert Spaces to Tabs
2 Word wrap (value column width)
3 Pad to width of value
4 Center in width of value
5 Right justify in width of value
6 Restrict CSV field to value
7 Restrict tab-delimited field to value
8 Truncate to width value
9 Force to width value
10 Repeat file value times
11 Restrict to blocks of length
12 Expand packed decimal (with implied decimals)
13 Expand zoned decimal (with implied decimals)
14 Expand unsigned (even-length) packed decimal
15 Expand unsigned (odd-length) packed decimal
Value - the numeric value to use
/comment=text
Add a comment to a filter file.
Text - Comment to add
/log=Filename
Log the TPIPE actions.
Filename - Name of log file
/run=InputFileName,OutputFileName,"CommandLine"
Adds a Run External Program filter. The arguments are:
InputFilename - the filename that TextPipe should read from after the External Program writes to it.
OutputFilename - the filename that TextPipe should write to for the External Program to read in.
CommandLine - the command line of the program to run. Should include double quotes around the entire command line.
/split=type,SplitSize,SplitChar,SplitCharPos,SplitCharCount,SplitLines,SplitFilename
Adds a split type filter. The arguments are:
type:
0 Split at a given size
1 Split at a given character
2 Split at a given number of lines
splitSize - the size file to split at
splitChar - the character to split at
splitCharPos -
0 Split before the character (it goes into the next file)
1 Split after the character (it remains in the first file)
2 Split on top of the character (remove it)
SplitCharCount - the number of times to see SplitChar before splitting
SplitLines - (optional) split after a given number of lines, default 60
SplitFilename - (optional) the name to give to each output split file. /split will append a "%3.3d" format specifier to the name; i.e. an input file "foo.txt" will generate output files named "foo.txt.000", "foo.txt.001", etc. If you don't specify a SplitFilename, /split will use the input filename as the base.
/grep=Type,IncludeLineNumbers,IncludeFilename,IgnoreCase,CountMatches,PatternType,UTF8,IgnoreEmpty,Pattern
Adds a Grep type line based filter. The arguments are:
Type:
0 Restrict lines matching
1 Restrict lines NOT matching
2 Extract matches
3 Extract matching lines (grep)
4 Extract non-matching lines (inverse grep)
5 Remove matching lines
6 Remove non-matching lines
IncludeLineNumbers - 1 to include the line number where the pattern was found
IncludeFilename - 1 to include the filename where the pattern was found
IgnoreCase - 1 to ignore case when matching the pattern
CountMatches - 1 to only output a count of the number of matches
PatternType
0 Perl pattern
1 Egrep pattern
2 Brief pattern
3 MS Word pattern
UTF8 - 1 to allow matching Unicode UTF8 characters
IgnoreEmpty - 1 to ignore empty matches
Pattern - the (regular expression) pattern to match
/replace=Type,MatchCase,WholeWord,CaseReplace,PromptOnReplace,Extract,FirstOnly,SkipPromptIdentical,Action,SearchStr,ReplaceStr
Adds a search and replace (find and replace) filter. The arguments are:
Type:
0 Replace
1 Pattern (old style)
2 Sounds like
3 Edit distance
4 Perl pattern
5 Brief pattern
6 Word pattern
MatchCase - Matches case when set to 1, ignores case when set to 0
WholeWord - Matches whole words only when set to 1
CaseReplace - Replaces with matching case when set to 1
PromptOnReplace - Prompts before replacing when set to 1
Extract - If 1, all non-matching text is discarded
FirstOnly - If 1, only replace the first occurrence
SkipPromptIdentical - If 1, don't bother prompting if the replacement text is identical to the original.
Action - the action to perform when found:
0 replace
1 remove
2 send to subfilter
3 send non-matching to subfilter
4 send subpattern 1 to subfilter etc
SearchStr - the string to search for
ReplaceStr - the string to replace it with
/xml=Type,IncludeText,IncludeQuotes,MatchCase,BufferSize,Tag,Attribute,EndTag
Adds an HTML/XML filter. The arguments are:
Type - the operation to perform:
0 restrict to an element
1 restrict to an attribute
2 restrict to between tags
IncludeText - whether to include the find string in the restriction result (default false)
IncludeQuotes - whether to include surrounding quotes in the attribute result or not (default false)
MatchCase - match case exactly or not (default false)
BufferSize - the maximum expected size of the match (default 32768)
Tag - the element or start tag to find
Attribute - the attribute to find
EndTag - the endTag to find