Swiss File Knife
a command line
free external tools,
add: SFKTray Lite now supports 4 status slots.
- add: windows: fromclip +copy/move support. allows to mark filenames in cmd.exe then copy/move the marked names.
- add: sfk sel a.txt b.txt +copy out support.
- add: sfk filt in.txt -+pat +copy out support.
- add: addtovar: option -noline to not append extra linefeeds.
- add: setvar: support slash patterns by -spat.
- add: getvar: option -tofile to write variable content to a file.
- add: num: support of negative numbers.
- add: dir -juststat to show just statistics.
- add: ftpserv: -verbose now shows path info on invalid path error, -verbose=2 shows dump of input line.
- chg: ftp client: now -quiet no longer tells "no filenames from previous commands".
- fix: rmtree: short confirm "rmtree." did not work.
- fix: dir repeated with +loop showed wrong number of total bytes.
- chg: sfk dir now supports -noname.
- doc: setvar: examples for string editing.
- doc: xtext: find lines not matching a pattern.
- doc: filter: file copy examples.
- rel: 01.11.2018, Major Update
- sum: improved scripting support. bugfix for scripts running in folders with spaces in their name.
- FIX: sfk batch: script did not work within folder names containing spaces, like C:\users\Foo Bar\myscript.bat. now sfk script "%~f0" with quotes is used. fixed also related commands like sfk samp sfk, sfk samp sfkbash.
- CHG: chaining: if chaining is stopped due to missing filenames it now shows a notice again by default, to avoid unexpected chain stops without any infos. the notice can no longer be suppressed by -quiet, but as always by -nonote.
- fix: option -quiet did not work globally.
- chg: chaining: -verbose no longer tells how the command chain is stepped. use -tracechain instead.
- add: general option -keepchain to never stop the command chain, even if commands that expect filenames get none.
- add: label: support for all general options.
- add: setglobalopt to set global options.
- add: chaining support with where, index, script, home.
- add: encode -base64: option -nowrap to keep output as one long line.
- fix: getcol: unexpected set of global -upat option.
- chg: sfk chars: now supports multiple code parameters.
- add: ffilter: warning on wrong parameter sequence.
- fix: copy -ltarg under windows showed source name.
- chg: zip reading: better error message on missing file.
- doc: tell: example how to print text starting with '+'.
- doc: wtou: added perline example.
- doc: if: info about limited nesting.
- doc: end: was not searchable.
- doc: status: infos about limited colors.
- doc: label: more detailed info about global options.
- doc: help opt: -tracechain.
- doc: help chain: info on "no files, stopping x".
- rel: 03.10.2018, Major Update
- sum: added easy installation under windows by a double click on sfk.exe, then key 1. this copies sfk.exe to a folder c:\tools and creates a shell icon on the desktop.
- add: sfk base: optional installation when running sfk by double click from windows explorer.
- CHG: Data Change: sfk index, name under windows no longer use files directly within C:\ but only in a folder C:\zz-index, to avoid user local storage in a VirtualStore folder. use sfk name -useold to read old index files. the new behaviour allows one C:\\ index file for all users on the same windows machine.
- add: predefined variable: sys.sfkver for sfk version
- add: predefined variable: sys.numcols for number of columns available in console
- fix: getcol, tabcol: caused unexpected double execution of following chain commands.
- add: clipsrc: -h help option
- del: clipxml: does not work, no longer documented. Initial Release:
- rel: 18.09.2018, Major Update
- sum: added sfk addtovar to collect text lines in a variable, sfk crc to create crc-32 checksums, sfk difflines to list different unique lines between two text files. improved ftp client compatibility. many detail improvements for scripting, like new variable functions.
- chg: Syntax Change: command chaining no longer allows data tunneling through non consuming commands. in a chain like cmd1 +cmd2 +cmd3 +cmd4 +cmd5 it is no longer possible to send data from cmd1 to cmd3/4/5 if cmd2 uses no chain data (e.g. if, tell). this tunneling was inconsistent and caused endless conflicts by unwanted chain data in cmd3/4/5. use -keepdata or SET SFK_CONFIG=keepdata for the old behaviour which was inconsistent and worked only sometimes.
- chg: Syntax Change: sfk if: no longer passes through any chain data, as this behaviour was ambiguous and caused endless unwanted chain input. this means combinations like +xed /a/b/ +if ... +xed /b/c/ are no longer possible. use '+tif' instead, or global option -keepdata.
- add: sfk ... +tif for conditional execution requesting text and stream data explicitely.
- add: sfk ... +tgoto to jump to a label passing text and stream data explicitely.
- chg: Syntax Change: sfk md5: now only prints the checksum without filename if only a single filename is given. use option -name for the old behaviour.
- chg: Data Change: sfk getvar -line no longer appends CR or LF at extracted line.
- chg: Data Change: web: no longer produces shell return code 9 on error, but 1, to be consistent with command chaining rc.
- FIX: linux: case insensitive pattern match and text extraction did not work, esp. with xed or xex.
- CHG: improved scripting: combinations like sfk echo foo +setvar a=text sfk echo foo +setvar a +if ... setvar b=text sfk echo foo +xex ... +setvar b=1 no longer require 'then' in many cases.
- add: Simple Expressions: tag [skip] at the start of a pattern now skips this text completely and does not count it as a hit.
- chg: archive file extensions: extended the list of archive files recognized by -[q]arc by more office file extensions. for full details type: sfk help opt
- chg: no longer activating archive file read implicitely with most functions. use -[q]arc instead.
- fix: ftpserv, httpserv: unwanted listing of zip file contents instead of zip file itself.
- add: sfk addtovar, append text as lines to a variable
- add: variables: #(strpos(a,b)) and #(contains(a,b)) now searches content of variable b within text of variable a.
- add: variables: #(begins(a,'word')) now tells if text of variable a starts with word.
- chg: scripts: #(rsubstr(s,o,l)) now also supports offset/length beyond string length, producing an empty string instead of error.
- fix: scripts: #(substr(a,n)) with n beyond length of a stopped the script with "invalid variable expression". now it evaluates to an empty string.
- add: sfk variables: function #(numlines(a)) to tell number of lines in variable a.
- add: sfk md5var, create md5 hash from sfk variable content.
- add: sfk difflines, show text lines that differ between two text files or variables
- add: sfk crc, crcgento, crccheck to create and verify crc32 checksums (the same as used in zip files).
- add: sfk list: now sets return code if any matching files or dirs were found.
- add: sfk web: now sets return code 1 on any error.
- add: sfk sft: now sets return code if any files were sent.
- add: del[tree] now sets return code on failure
- add: deltree now retries a failed folder deletion 2 times with a 100 msec wait inbetween.
- add: del[tree] option -stoponerr to stop chain execution if deletion fails
- chg: del[tree] now produces a warning if deletion is incomplete.
- fix: ftp client: 30 second wait after listing of directory or file download with some servers.
- fix: run: -printcmd was ignored.
- chg: zip reading: invalid zip file now produces a warning instead of an error.
- fix: xfind, replace functions, xrename: variables were not expanded for dir parameters.
- chg: sfk run: now shows a notice if no filenames are processed on chaining.
- chg: xed, xrename now ignore empty pattern parameters instead of stopping with an error. useful for scripting with optional parms.
- chg: command chaining: -verbose now shows a notice "chaining stops before ...: no data" if execution stops due to no data.
- chg: command chaining: no longer showing "chaining stops ...: no filenames" unless -verbose is given.
- chg: sfk batch out.sh under linux: added exit after sfk call.
- chg: sfk sft cput: if no files are sent then -quiet no longer tells anything.
- add: copy -flat2 to copy all files of a dir tree to an output folder with relative names.
- add: make-random-file -lock option, to keep a file locked for testing.
- fix: xfind with -justrc: chaining to if was not possible if nothing was found.
- fix: xfind -showrc produced an error.
- add: ifnotexist, check if a file does not exist.
- add: swap, reverse chain text character order
- add: Windows: sfk clock: pressing enter now resets the relative time.
- add: Windows: sfk clock3 shows overall start time and, when pressing Enter, relative time since overall start in a second column.
- add: sfk clock2 to show just a relative time.
- add: sft client: multi file send: now showing total mb info.
- add: xed: option -tolines to force line output.
- fix: xed: listing of mem leaks if given filename cannot be read, or input too large.
- doc: end: xed -tolines reference
- doc: tofile: addtovar reference
- doc: sft: upload loop example.
- doc: index: reworked linux examples.
- doc: xfind: -showrc removed, wrong context.
- doc: filter: difflines reference.
- doc: help opt: new list of archive extensions and -qarc info
- doc: xed: reference to sfk swap
- doc: sfk help chain: data tunneling notice.