How to do things
AI Noob vs. Pro

List biggest files
List newest files
Show subdir sizes
Search in files
Replace word in files
List dir differences
Send files in LAN

Free Open Source:

Swiss File Knife

a command line
multi function tool.

remove tabs
list dir sizes
find text
filter lines
find in path
collect text
instant ftp or
http server
file transfer
send text
patch text
patch binary
run own cmd
convert crlf
dup file find
md5 lists
fromto clip
hexdump
split files
list latest
compare dirs
save typing
trace http
echo colors
head & tail
dep. listing
find classes
speed shell
zip search
zip dir list

Depeche View
Source Research
First Steps

windows GUI
automation

command line
file encryption

free external tools,
zero install effort,
usb stick compliant:

zip and unzip
diff and merge
reformat xml
reformat source

cpp sources

log tracing
mem tracing
hexdump
using printf

articles

embedded
stat. c array
stat. java array
var. c array
var. java array
view all text
as you type
surf over text
find by click
quick copy
multi view
find nearby
fullscreen
bookmarks
find by path
expressions
location jump
skip accents
clip match
filter lines
edit text
highlight
load filter
hotkey list
receive text
send in C++
send in Java
smooth scroll
touch scroll
fly wxWidgets
fly over Qt
search Java

How to set and read variables in SFK scripts to extract data in one command and reuse it in following commands.
  • Download the free Swiss File Knife Base from Sourceforge.
  • Open the Windows CMD command line, Mac OS X Terminal or Linux shell.
  • OS X : type mv sfk-mac-64.exe sfk and chmod +x sfk then ./sfk
  • Linux: type mv sfk-linux-64.exe sfk and chmod +x sfk then ./sfk. OS X and Linux syntax may differ, check the help within the tool.
sfk parameters and variables support

sfk script parameters

   -  look like %1 %2 %3 to %9,
      or with sfk for windows also like $1 $2 $3.

   -  are used with sfk script and call / label.

   -  are passed into the script or label command chain
      wherein they are never changed.

web reference
   http://stahlworks.com/sfk-helpvar

   example:
      --- file filt.bat begin ---
      sfk script "%~f0" -from begin %*
      GOTO end
      sfk label begin
         +filter %1 %2
         +end
      :end
      --- file filt.bat end ---
      typing "filt.bat in.txt -+foo" will run sfk filter
      using the parameters "in.txt" and "-+foo".
      under windows %~f0 is the absolute batch filename
      itself including extension .bat or .cmd.

sfk global variables

   -  are set like:
      sfk setvar myvar="the test text" ...
      sfk echo foo +setvar myvar ...
      sfk xed in.txt "/foo*bar/[setvar myvar][part2][endvar]/" ...

   -  are used by further commands in the chain like:
      sfk ... +getvar myvar
      sfk ... +echo -var "using #(myvar)"
      sfk ... +xed "_<foo>*</foo>_[part1][getvar myvar][part3]_"
      note:
        to read or use variable contents by a pattern #(name)
        option -var must be given. this is to avoid unwanted
        side effects with commands that get "#(" in their
        input files or input text streams.

   -  allowed variable names:
      must start with a-z, then a-z0-9_

   examples:
      sfk setvar file=in.txt +filter -var "#(file)" -+foo
         runs sfk filter, giving the input filename by variable.
      sfk xex in.txt "/foo=*/[setvar fooval][part2][endvar]/"
       +echo -var "foo is: #(fooval)"
         extract foo=(any text) from in.txt, place the found
         text into variable fooval, then print it. [19]

sfk predefined variables

   #(sys.slash)    produces \ under windows, / under linux.
   #(sys.sfkver)   current sfk version.
   #(sys.numcols)  number of console columns.
   #(sys.ownscript.name)  filename of current script.

   to get the text of the current script, use for example:
   sfk ... +getvar sys.ownscript.text +filter ...

   environment variable access

   can be done like #(env.varname). varname is case
   insensitive under windows and uses case on linux.

   example:
      sfk -var echo "tmp contains: #(env.TMP)"

sfk local command variables

   -  are created directly from input text
      produced by a previous command in the command chain

   -  are suppported only within some commands like
      sfk run "... $text ...."
         runs an external program once for every input line.
      sfk perline "... $text ..."
         runs sfk internal commands once for every input line.
      sfk filter -tabform "... $col1 ... $col2 ..."
         splits text lines by TAB char, allowing reformatting.
      type sfk run, sfk perline etc. for further infos.

see also
   sfk setvar    set an SFK variable
   sfk addtovar  append text lines to an SFK variable
   sfk incvar    increment a numeric variable
   sfk decvar    decrement a numeric variable
   sfk getvar    get SFK or environment variable

sfk variable output formatting

   formal syntax:

      #(-03.4varname)

   with possible control characters:
      -   format left justified, else right
      0   fill with zeros, else with blanks
      .4  take up to 4 chars from variable

   example: if variable i contains "1" then

      command                 output
      +echo -var ">#(i)<"     >1<
      +echo -var ">#(3i)<"    >  1<
      +echo -var ">#(-3i)<"   >1  <
      +echo -var ">#(03i)<"   >001<

   example: if variable s contains "abcde" then

      command                 output
      +echo -var ">#(.3s)<"   >abc<
      +echo -var ">#(5.3s)<"  >  abc<

sfk variable functions

   when reading variable text like #(varname) some extra
   functions can be applied using #(func(varname,...)).
   available functions are:

   strpos(v,'text')        get index of text within v.
                           0=first char, -1=not found
   strpos(v,-case 'text')  same, case sensitive (fast)
   strpos(v,myvar)         get index of text from myvar
                           within text of variable v.
   strpos(v,-spat '\x20')  search using slash patterns
   strrpos(v,'text')       search from right side
   contains(v,'text')      tells 1 if text is found in v,
                           else 0. accepts -case and -spat
   contains(v,-case a)     tells if text from variable a
                           is contained within v using
                           fast case sensitive search
   begins(v,'word')        check if string starts with word.
                           returns 1 (yes) or 0 (no).
   ends(v,'word')          check if string ends with word.
                           returns 1 (yes) or 0 (no).
   substr(v,o[,l])         substring from offset o length l
                           which can be variables themselves.
                           offset 0 is first char. negative o
                           starts from right side minus o.
   rsubstr(v,o[,l])        substring from right side taking
                           up to l chars in left direction.
   [l/r]trim(v)            strip whitespace at sides
   isset(v)                tells 1 if v is set, else 0
   isempty(v)              tells 1 if not set or empty
   size(v)                 number of bytes in v
   strlen(v)               number of characters in v,
                           if it contains just plain text
   numlines(v)             number of lines in v

   example: if variable s contains "foo bar" then

   command                           output
   +echo -var "#(substr(a,4,3))"     bar
   +echo -var "#(strpos(a,'bar'))"   4

 
sfk parameters and variables support

sfk script parameters

   -  look like %1 %2 %3 to %9,
      or with sfk for windows also like $1 
      $2 $3.

   -  are used with sfk script and call 
      / label.

   -  are passed into the script or label 
      command chain wherein they are never
      changed.

web reference
   http://stahlworks.com/sfk-helpvar

   example:
      --- file filt.bat begin ---
      sfk script "%~f0" -from begin %*
      GOTO end
      sfk label begin
         +filter %1 %2
         +end
      :end
      --- file filt.bat end ---
      typing "filt.bat in.txt -+foo" will 
    run sfk filter
      using the parameters "in.txt" and 
      "-+foo". under windows %~f0 is the
      absolute batch filename itself
      including extension .bat or .cmd.

sfk global variables

   -  are set like:
      sfk setvar myvar="the test text" ...
      sfk echo foo +setvar myvar ...
      sfk xed in.txt "/foo*bar/[setvar 
      myvar][part2][endvar]/" ...

   -  are used by further commands in the 
      chain like: sfk ... +getvar myvar
      sfk ... +echo -var "using #(myvar)"
      sfk ... +xed "_<foo>*</
      foo>_[part1][getvar
      myvar][part3]_" note:
        to read or use variable contents by 
        a pattern #(name) option -var
        must be given. this is to avoid
        unwanted side effects with commands
        that get "#(" in their input files
        or input text streams.

   -  allowed variable names:
      must start with a-z, then a-z0-9_

   examples:
      sfk setvar file=in.txt +filter -var 
      "#(file)" -+foo
         runs sfk filter, giving the input 
         filename by variable.
      sfk xex in.txt "/foo=*/[setvar 
      fooval][part2][endvar]/"
       +echo -var "foo is: #(fooval)"
         extract foo=(any text) from in.txt,
         place the found text into
         variable fooval, then print it.
         [19]

sfk predefined variables

   #(sys.slash)    produces \ under 
                   windows, / under linux.
   #(sys.sfkver)   current sfk version.
   #(sys.numcols)  number of console 
                   columns.
   #(sys.ownscript.name)  filename of 
 current script.

   to get the text of the current script, 
   use for example: sfk ... +getvar sys.
   ownscript.text +filter ...

   environment variable access

   can be done like #(env.varname). varname 
   is case insensitive under windows and
   uses case on linux.

   example:
      sfk -var echo "tmp contains: 
           #(env.TMP)"

sfk local command variables

   -  are created directly from input text
      produced by a previous command in the 
      command chain

   -  are suppported only within some 
      commands like sfk run "... $text ....
      "
         runs an external program once for 
         every input line.
      sfk perline "... $text ..."
         runs sfk internal commands once 
         for every input line.
      sfk filter -tabform "... $col1 ... 
                   $col2 ..."
         splits text lines by TAB char, 
         allowing reformatting.
      type sfk run, sfk perline etc. 
    for further infos.

see also
   sfk setvar    set an SFK variable
   sfk addtovar  append text lines to an 
                 SFK variable
   sfk incvar    increment a numeric 
                 variable
   sfk decvar    decrement a numeric 
                 variable
   sfk getvar    get SFK or environment 
                 variable

sfk variable output formatting

   formal syntax:

      #(-03.4varname)

   with possible control characters:
      -   format left justified, else right
      0   fill with zeros, else with blanks
      .4  take up to 4 chars from variable

   example: if variable i contains "1" 
             then

      command                 output
      +echo -var ">#(i)<"     
             >1<
      +echo -var ">#(3i)<"    
             > 1<
      +echo -var ">#(-3i)<"   
             >1 <
      +echo -var ">#(03i)<"   
             >001<

   example: if variable s contains "abcde" 
             then

      command                 output
      +echo -var ">#(.3s)<"   
             >abc<
      +echo -var ">#(5.3s)<"  >  
             abc<

sfk variable functions when reading variable text like #(varname) some extra functions can be applied using #(func(varname,...)). available functions are: strpos(v,'text') get index of text within v. 0=first char, -1=not found strpos(v,-case 'text') same, case sensitive (fast) strpos(v,myvar) get index of text from myvar within text of variable v. strpos(v,-spat '\x20') search using slash patterns strrpos(v,'text') search from right side contains(v,'text') tells 1 if text is found in v, else 0. accepts -case and -spat contains(v,-case a) tells if text from variable a is contained within v using fast case sensitive search begins(v,'word') check if string starts with word. returns 1 (yes) or 0 (no). ends(v,'word') check if string ends with word. returns 1 (yes) or 0 (no). substr(v,o[,l]) substring from offset o length l which can be variables themselves. offset 0 is first char. negative o starts from right side minus o. rsubstr(v,o[,l]) substring from right side taking up to l chars in left direction. [l/r]trim(v) strip whitespace at sides isset(v) tells 1 if v is set, else 0 isempty(v) tells 1 if not set or empty size(v) number of bytes in v strlen(v) number of characters in v, if it contains just plain text numlines(v) number of lines in v example: if variable s contains "foo bar" then command output +echo -var "#(substr(a,4,3))" bar +echo -var "#(strpos(a,'bar'))" 4

you are viewing this page in mobile portrait mode with a limited layout. turn your device right, use a desktop browser or buy the sfk e-book for improved reading.

 
sfk is a free open-source tool, running instantly without installation efforts. no DLL's, no registry changes - just get sfk.exe from the zip package and use it (binaries for windows, linux and mac are included).

 

the Endless Image 🍣 Sushi