Feature List:

 

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:

 

 

ATTRIB

 

/L - Set or display the attributes of the symbolic link versus the target of the symbolic link.

 

COPY

 

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.

 

DEL

 

If you don't specify any arguments, DEL will display the command dialog.

 

DESCRIBE

 

If you don't specify any arguments, DESCRIBE will display the command dialog.

 

ESET

 

/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.

 

GLOBAL

 

If you don't specify any arguments, GLOBAL will display the command dialog.

 

JABBER

 

 If you don't specify any arguments, JABBER will display the command dialog.

 

MD

 

 If you don't specify any arguments, MD will display the command dialog.

 

MKLINK

 

If you don't specify any arguments, MKLINK will display the command dialog.

 

MKLNK

 

 If you don't specify any arguments, MKLNK will display the command dialog.

 

MOVE

 

 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.

 

PDIR

 

Now supports multiple nested *'s in a @ function specification.

 

PLAYSOUND

 

 If you don't specify any arguments, PLAYSOUND will display the command dialog.

 

RD

 

If you don't specify any arguments, RD will display the command dialog.

 

REN

 

 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.

 

SELECT

 

If you don't specify any arguments, SELECT will display the command dialog.

 

SENDHTML

 

If you don't specify any arguments, SENDHTML will display the command dialog.

 

SENDMAIL

 

 If you don't specify any arguments, SENDMAIL will display the command dialog.

 

SET

 

 /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).

 

SETARRAY

 

/R filename arrayname - read a file into a (1-dimensional) array. (SETARRAY will determine the required size of the array.)

 

START

 

 /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.

 

SYNC

 

If you don't specify any arguments, SYNC will display the command dialog.

 

TAR

 

If you don't specify any arguments, TAR will display the command dialog.

 

TIMER

 

Accepts an optional command to run. This is the equivalent of "timer on & command & timer off". The syntax is:

 

timer command [args]

 

TOUCH

 

 If you don't specify any arguments, TOUCH will display the command dialog.

 

UNTAR

 

If you don't specify any arguments, UNTAR will display the command dialog.

 

UNZIP

 

If you don't specify any arguments, UNZIP will display the command dialog.

 

ZIP

 

 If you don't specify any arguments, ZIP will display the command dialog.

 

New Commands:

 

DEBUGMONITOR

 

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.

 

DESKTOP

 

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.

 

RESOLUTION

 

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.

 

TPIPE

 

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