Minor Update.
Read the changelist for details.
Zip File Contents:
1. Binaries of Swiss File Knife Base, the multi function command line tool
for Windows (XP to 10), Intel Linux (current and old releases),
Apple Macintosh (i686 and PPC) and ARM systems like Raspberry Pi.
2. Sourcecode and build scripts of SFK Base,
allowing compilation under Windows and Linux.
3. Some documentation, example and test files.
If you are in a hurry and want only a single executable,
- download any of these files:
sfk.exe Swiss File Knife for Windows (32/64 bits).
sfkx64.exe SFK x64 for 64 bit Windows only (OSE build).
sfk-linux.exe SFK for 32 bits Intel Linux, like Ubuntu.
sfk-linux-64.exe SFK for 64 bits Intel Linux, like Ubuntu 64.
sfk-linux-lib5.exe SFK for older Intel Linux, like DSL.
sfk-mac-i686.exe SFK for current Intel based Macs.
sfk-mac-ppc.exe SFK for older PowerPC Macs.
sfk-arm.exe SFK for ARM systems like Raspberry Pi.
sfktray-set-up.exe The SFKTray Status Display Tool for Windows,
Freeware edition, for use with sfk status.
you may use
1) automatic setup (Windows only):
- double click on the downloaded sfk.exe.
on Windows 10 you may have to confirm
a security dialogue to let it start.
- a command line window opens.
press 1, then enter to close.
- search the new "sfk shell" desktop icon.
double click to open a command line
which contains the sfk command.
or
2) manual setup:
- open a terminal or command line window (CMD.EXE).
- cd into your download folder.
- Windows: rename the .exe to sfk.exe,
copy it to an easy folder like C:\tools.
extend the command search path by:
SET PATH=%PATH%;C:\tools
now you can use the 'sfk' command.
- Linux/Mac: rename the .exe to just "sfk" like:
mv sfk-mac-i686.exe sfk
then make it executable by:
chmod +x sfk
and finally type:
./sfk
if you have no unzip tool, or in a wrong version,
you may download unzip for the command line from
http://stahlworks.com/dev/index.php?tool=zipunzip
------------------------------------------------------------------
the files are no longer replaced on updates,
and can be safely linked by package managers.
old folders from which no files are ever downloaded
may be cleaned up after a while.
------------------------------------------------------------------
Revision 4:
- rel: 08.12.2018, Minor Update
- sum: improved scripting support.
the free SFKTray lite can now display
4 status lights.
- 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.
Revision 3:
- 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".
Revision 2:
- 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.