ctcl is basically a tclkitsh or tclsh replacement for Windows. It is a console application with twapi bound in. The biggest difference though from tclsh or tclkitsh is in its accepting scripts from the command line using standard Tcl syntax. Example are below:
Without any arguments, ctcl behaves like tclsh.
If the first argument is a script file, ctcl behaves like tclsh.
Otherwise, ctcl treats the entire line as a Tcl script. No magic, but very convenient under Windows. Examples follow.
tcl::mathop are autoimported
R:\>ctcl + 1 2 3 6
twapi commands are also autoimported.
R:\>ctcl get_process_ids -name notepad.exe 3328 1684
ctcl has its own built-in convenience commands.
R:\>ctcl toclip [read stdin] This text will go into clipboard ^Z
Useful as a flexible Tcl based filter.
R:\>cat foo.txt | ctcl string toupper [read stdin]
The command line may have compound commands.
R:\>ctcl xargs end_process [get_process_ids -name notepad.exe]
Command may also be continued across multiple lines.
R:\>ctcl foreach pid [get_process_ids -name notepad.exe] { > puts "Killing PID $pid" > end_process $pid > } Killing PID 2804 Killing PID 2352
Some facilities for pretty printing are included. Dump process information...
R:\>ctcl kl_pp [dict values [get_multiple_process_info -pid -name -virtualbytes]] 0 System Idle Process 0 4 System 1929216 272 ati2evxx.exe 20848640 400 smss.exe 3903488 488 iexplore.exe 134049792 640 csrss.exe 28667904 664 winlogon.exe 66490368 708 services.exe 22413312 720 lsass.exe 42393600 ...
...or network connections for port 80.
R:\>ctcl kl_pp [get_tcp_connections -matchremoteport 80] 192.168.1.2 3464 209.85.153.100 80 estab 1344 0 firefox.exe C:\Program Files\Mozilla Firefox\firefox.exe 192.168.1.2 3463 209.85.231.100 80 estab 1344 0 firefox.exe C:\Program Files\Mozilla Firefox\firefox.exe 192.168.1.2 3446 209.85.153.132 80 time_wait 0 0 192.168.1.2 3447 209.85.153.132 80 time_wait 0 0
Download link coming soon.