Swiss File Knife is a supercharged command line tool which crams around 100 functions into a single executable.

The program can search for files by content, or name. It's able to list the contents of directories, create or delete directory trees. And you get a lengthy list of text and file processing options: LF <> CRLF, tab <> space, hex <> binary, hex <> dec, insert string, replace string, sort string, split file, join file, more.

This would be useful in itself, but Swiss File Knife does a whole lot more. The program also includes commands to synchronise a folder tree, find duplicate files, cut video and binary files, create MD5 hashes, send UDP or HTTP requests, download HTTP files, even run instant FTP and HTTP servers.

Most of these commands deliver far more than you'd expect. The List command doesn't just list files in a directory tree, for example: it also supports a host of archive formats. And it's enormously flexible, with more than 35 switches, which can themselves be combined in many different ways, and have their output passed on to other Swiss File Knife commands.

There's also plenty of scripting support, with tools to get user input, run sequences of Swiss File Knife commands, run commands on every file in a folder, run commands in a loop, and more.

Perhaps most surprising of all, though, Swiss File Knife isn't too difficult to learn. There's a lot to explore, but the syntax of each command is relatively straightforward. When listing files, for example, there's no "-n -l -p" garbage: instead you'll use switches like -time, -hidden, -sort, -minsize, -maxsize and so on. You can probably guess what they do already. And if you can't, a truly excellent PowerShell-like local Help system explains all.

1.7.7 brings:
-  sum: easy web data access with functions
        sfk web, wfilter, xex. added sfk calc to do
        simple calculations. improvements of wget,
        ftpclient, udpdump, find, xfind, script.
        diverse bug fixes.
-  inf: Compatibility Notice: sfk scripts with
        quoted multi line parameters will change
        their default behaviour in the future.
        see "sfk label" options -qtrim and -qraw.
-  dep: Deprecation Warning: sfk webreq should
        no longer be used. use sfk web instead.
-  chg: Compatibility Notice: sfk pause: no longer
        sets a non zero shell return code if Esc
        key is pressed (which was undocumented).
-  add: sfk update: check for SFK updates.
-  add: sfk pause: option -keyrc to set the
        shell return code by ascii code of the
        pressed key.
-  add: sfk filter: option -head=n to read only
        first n lines of text files.
-  add: sfk filter: option -tail=n to read only
        last n lines of text files.
-  add: web access support with sfk filter, xex.
        help text examples for web access.
-  add: xe: sfk xreplace: option -astext to print
        search/replace hits as plain text.
-  add: sfk web, send a simple web request.
        new implementation replacing webreq.
-  add: sfk label: option -qtrim to strip whitespace
        from quoted multiline parameters.
-  add: sfk ftpserv: support for environment variables
        SFK_FTP_SUSER, SFK_FTP_SPW, SFK_FTP_SRUNPW
        which are used only by sfk ftpserv, not sfk ftp.
-  add: sfk ftp: support for environment variables
        SFK_FTP_CUSER, SFK_FTP_CPW which are used
        only by sfk ftp, not sfk ftpserv.
-  add: main help now lists the most important
        active environment variables.
-  add: full documentation of option -upat for using
        unix patterns : and # under windows.
-  add: option -upat2 to use sfk linux wildcard %
        instead of * under windows
-  add: sfk windows: set SFK_CONFIG=upat or upat2
        support to use unix syntax in bash files
-  add: sfk for windows now also supports environment
        variable option SFK_CONFIG=wildstar:c
        to support a different wildcard character.
-  add: sfk calc, do a simple calculation of two values.
-  add: xfind, xhexfind: option -names to show just
        the names of files containing hits.
-  fix: udpsend: no error on missing port or data.
-  fix: find: option -justrc produced blank lines.
-  add: udpdump: option -from now supports multiple
        ip patterns separated by comma.
-  add: udpdump: option -notfrom.
-  add: wget: auto expansion of url to http://url
-  chg: ftp client: "server speaks sft" message
        is now shown only with -verbose.
-  chg: ftp client: "using SFK_FTP_PW" message
        is now shown only with -verbose.
-  add: wget: option -maxwait to stop on timeout.
-  opt: wget: no longer sends head request.
-  add: httpserv: -raw option to send content
        without any reply headers.
-  fix: wget: download from a primitive server
        that sends no http headers produced
        incomplete first text line.
-  fix: sfk gettext: did not work in many cases.
-  chg: sfk if, sfk call: no longer consume chain text
        without any output.
-  add: sfk fromclip -h: example how to append
        clipboard changes to a logfile in a loop.

Verdict

An amazing collection of powerful command line tools. Use some individually, string others together in scripts, it's your call. If you make even occasional use of the command line, then go grab a copy of Swiss File Knife right now.