|
How to do things AI Noob vs. Pro
List biggest files Free Open Source: Swiss File Knifea command line
Depeche View
command line
free external tools,
cpp sources
articles |
sfk ... +if [opts] expression command1 ... +command2
sfk ... +if ... [+]begin ... +elseif ... +else ... +endif
execute command1 if expression is true, then continue to command2.
if expression is not true, skip directly to command2.
can be used only in a command chain, after another command.
use "+if expr +begin ... +endif" to run multiple commands
as one block, if expression is true.
supported expressions
return code comparison
"rc=n" return code of previous command equal to n
"rc>n" return code of previous command higher than n
"rc<n" return code of previous command lower than n
"rc<>n" return code of previous comm. not equal to n
generic text or number comparison
"l = r" left part is equal to right
"l <> r" left part is not equal to right
"l < r" left part is lower then right
"l > r" left part is higher then right
"l <= r" left part is lower or equal
"l >= r" left part is higher or equal
if both l and r contain only digits a numeric
comparison is done, else a text comparison.
logic values (since sfk 1.9.8.2)
"1" true, execute command or block
"0" false, skip command or block
options
options for if must be given before expression.
-var use sfk variables, must be first option
-text force text comparison (nocase)
-case case sensitive text comparison
-debug tell what is done in a generic comparison
limited nesting
if ... begin ... endif
- may not contain other if[exist] / begin / endif
- but may contain short if ... without begin.
invalid nesting is not detected, and causes an undefined
program flow. you may add global option -strictif to (try)
to detect wrong if statements better.
do not forget 'begin' when using complex statements!
sfk if ... begin ... +elseif ... +else ... +endif
strictly requires the 'begin', otherwise it may do
nothing, without any notice.
no chaining data support since sfk 1.9.3
+if does not accept any chain input data, as this
creates ambiguities with many following
commands, like +if ... +setvar a=text
see also
sfk ifexist check if a file or folder exists.
sfk call call sub functions in a script.
sfk goto jump to a local label.
examples
sfk filter in.txt -+err +if "rc>0" run -yes "x.bat" +echo done
if file in.txt contains the word "err", run x.bat.
the "echo done" is always executed.
sfk xex -justrc in.txt "/foo*bar/"
+if "rc=0" stop 9 "[Red]error:[def] miss" +echo "match"
type this all in one line, or use "sfk cmd 18". [18]
if file in.txt does not contain the search pattern
then stop with return code 9, printing an error.
sfk -var echo "foo and bar" +setvar a
+if "#(contains(a,'bar'))" tell "found bar" +tell "done"
prints "found bar" and then "done", because the
'contains' returns '1', causing command execution.
sfk if 0 begin tell one +else tell two +endif +tell three
prints 'two' and 'three'.
sfk ... +if [opts] expression command1 ...
+command2
sfk ... +if ... [+]begin ... +elseif ...
+else ... +endif
execute command1 if expression is true,
then continue to command2. if expression
is not true, skip directly to command2. can
be used only in a command chain, after
another command.
use "+if expr +begin ... +endif" to run
multiple commands
as one block, if expression is true.
supported expressions
return code comparison
"rc=n" return code of previous
command equal to n
"rc>n" return code of previous
command higher than n
"rc<n" return code of previous
command lower than n
"rc<>n" return code of previous
comm. not equal to n
generic text or number comparison
"l = r" left part is equal to right
"l <> r" left part is not equal
to right
"l < r" left part is lower
then right
"l > r" left part is higher
then right
"l <= r" left part is lower or
equal
"l >= r" left part is higher or
equal
if both l and r contain only digits a
numeric comparison is done, else a text
comparison.
logic values (since sfk 1.9.8.2)
"1" true, execute command or block
"0" false, skip command or block
options
options for if must be given before
expression. -var use sfk variables,
must be first option -text force
text comparison (nocase) -case case
sensitive text comparison -debug
tell what is done in a generic
comparison
limited nesting
if ... begin ... endif
- may not contain other if[exist] /
begin / endif
- but may contain short if ... without
begin. invalid nesting is not detected,
and causes an undefined program flow.
you may add global option -strictif to
(try) to detect wrong if statements
better.
do not forget 'begin' when using complex
statements!
sfk if ... begin ... +elseif ... +else
... +endif
strictly requires the 'begin', otherwise
it may do nothing, without any notice.
no chaining data support since sfk 1.9.3
+if does not accept any chain input
data, as this creates ambiguities
with many following commands, like
+if ... +setvar a=text
see also
sfk ifexist check if a file or folder
exists.
sfk call call sub functions in a
script.
sfk goto jump to a local label.
examples
sfk filter in.txt -+err +if "rc>0"
run -yes "x.bat"
+echo done
if file in.txt contains the word
"err", run x.bat. the "echo done" is
always executed.
sfk xex -justrc in.txt "/foo*bar/"
+if "rc=0" stop 9 "[Red]error:[def]
miss" +echo "match"
type this all in one line, or use
"sfk cmd 18". [18] if file in.txt
does not contain the search pattern
then stop with return code 9,
printing an error.
sfk -var echo "foo and bar" +setvar a
+if "#(contains(a,'bar'))" tell "found
bar" +tell "done"
prints "found bar" and then "done",
because the 'contains' returns '1',
causing command execution.
sfk if 0 begin tell one +else tell two
+endif +tell three
prints 'two' and 'three'.
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).
|


