Команда: sample
Примеры скриптов и пакетных файлов
Для оболочки Windows CMD.EXE, Linux bash, HTML-кода или простой программы Java/C++/PHP
в качестве отправной точки для собственного редактирования
с помощью команды sfk samp для Windows, Mac OS X и Linux.
sfk sample java|cpp|... [outfile.java|.cpp|...]
Выведет короткий пример кода на указанном языке программирования.
Параметры
sfk
создать простой скрипт sfk
sfkbat
- sfk-скрипт, встроенный в файл .bat или .cmd
sfkbash
- sfk-скрипт, встроенный в bash-скрипт
http
- пример сценария автоматического http-доступа
http -bat
... как файл Windows .bat
http -bash
... как файл .sh Linux
httpdata
создать ZIP-файл с файлами веб-демо для локального использования с помощью sfk httpserv
cmd
создать общий файл Windows .cmd или .bat
bash
создать универсальный скрипт bash для Linux
html
простая html-страница с CSS и JavaScript
java
создать класс Java, выполняющий ввод-вывод текстового файла
javaimg
создать класс Java, выполняющий ввод-вывод файла изображения
javahex
создать шестнадцатеричный дамп двоичных данных в Java
javagui
создать простое приложение Java gui
cpp
создать пример ввода-вывода текстового файла C++
cppnetlog
как отправить сетевой текст UDP на C++
javanetlog
как отправить сетевой текст UDP на Java
php
создать PHP-код командной строки для текстового ввода-вывода
phpimg
создать пример PHP для обработки изображений
Флаг -force
- если выходной файл уже существует, перезаписать его
sfk batch myscript.bat
делает то же самое, что и "sfk samp sfkbat myscript.bat"
ПРИМЕРЫ
sfk samp sfkbat foo.bat
Создает командный файл foo.bat со встроенным SFK-скриптом.
Введите "foo.bat" для запуска созданного скрипта. Обратите внимание, что
foo.bat должен быть создан в каталоге вашего PATH,
или в текущем каталоге
sfk batch foo.bat -force
то же, что и выше, и перезаписывает существующий файл.
sfk batch foo.sh
Создайте файл сценария bash с окончаниями строк только lf.
Также может использоваться в средах Windows for MingW
sfk samp java foo.java
Создайте Java-класс foo. если доступен java JDK
Введите "javac foo.java", а затем "java foo", чтобы запустить его
sfk samp phpimg doimg.php
Создайте сценарий обработки изображений, который можно запустить:
с помощью php doimg.php
, если php.exe находится в вашем PATH (прочтите примечания в скрипте)
sfk samp javahex +toclip
Скопируйте пример создания шестнадцатеричного дампа Java в буфер обмена
sfk samp http tmp.bat
Создайте пример сценария для автоматизированного доступа к веб-сайту и HTTP
sfk samp http -bash tmp.sh
то же самое, но с использованием bash в среде Windows Cygwin.
ПОЛУЧЕННЫЕ ОБРАЗЦЫ:
sfk samp sfk
sfk select testfiles .txt .hpp .cpp
// find words supplied by user.
// note that %1 is the same as $1.
+find
%1 %2 %3 $4 $5 $6
// process files containing hits
+run -quiet "sfk echo \"Found hit in: [green]$file[def]\"" -yes
// run the script by:
// sfk script "thisfile" pattern1 [pattern2 ...]
sfk samp sfkbat
@echo off
sfk script "%~f0" -from begin %*
rem %~f0 is the absolute batch file name.
GOTO xend
sfk label begin -var
// default batch, with some variable support.
// for a full file backup example use:
// sfk batch -full myfile.bat
+if "%1 = " begin
+tell "[green]usage:[def]"
+tell " #(sys.ownscript.name) copy [-yes]"
+stop -all
+endif
+setvar cmd="%1"
+setvar yes="%2"
+if "#(cmd) = copy" begin
+call docopy
+stop
+endif
+tell "unknown command: #(cmd)"
+end
sfk label docopy
+copy -checkdirs
mydir mydir2
-dir core doc db
-subdir !\tmp !\save
-file !.tmp
#(yes)
+end
:xend
sfk samp sfkbash
#!/bin/bash
sfk script "$0" -from begin $@
exit
function skip_block
{
sfk label begin -var -upat2
// default batch, with unified windows/linux syntax (-upat2).
// for a full file backup example use:
// sfk batch -full myfile.sh
+if "%1 = " begin
+tell "[green]usage:[def]"
+tell " #(sys.ownscript.name) copy [-yes]"
+stop -all
+endif
+setvar cmd="%1"
+setvar yes="%2"
+if "#(cmd) = copy" begin
+call docopy
+stop
+endif
+tell "unknown command: #(cmd)"
+end
sfk label docopy
+copy -checkdirs
mydir mydir2
-dir core doc db
-subdir :\tmp :\save
-file :.tmp
#(yes)
+end
}
sfk samp http
@echo off
sfk script "%~f0" -from begin %*
rem "%~f0" is the absolute batch file name.
GOTO xend
sfk label begin -var
// the -var above enables variables everywhere.
+setvar "baseurl=http://stahlworks.com/webdemo"
+web "#(baseurl)/contents.xml"
+xex "_******<
_[part4] [part8]\n_"
+perline "call listCategory #text" -yes
+end
sfk label listCategory
+echo "[green]=== List of %2: ===[def]"
+echo -spat "[yellow]Name Price[def]"
+then web "#(baseurl)/product_list_%1.xml"
// +xmlform +stop -all
+xex "=***<***<
=[part4]\t[part8] \x24\n="
+filter -upat -stabform "#(-12col1) #col2"
+end
rem a longer example with input, output and detail
rem explanations is available in the SFK Book.
:xend
sfk samp java
import java.io.*;
public class fileio
{
static void log(String s) { System.out.println("main: "+s); }
public static void main(String args[]) throws Throwable
{
if (args.length < 2)
{ log("supply in- and output filename."); return; }
// copy or convert text file
BufferedReader rin = new BufferedReader(
new InputStreamReader(
new FileInputStream(args[0]), "ISO-8859-1"
// or US-ASCII,UTF-8,UTF-16BE,UTF-16LE,UTF-16
));
PrintWriter pout = new PrintWriter(
new OutputStreamWriter(
new FileOutputStream(args[1]), "ISO-8859-1"
));
while (true) {
String sline = rin.readLine();
if (sline == null) break; // EOD
log("copying line: "+sline);
pout.println(sline);
}
pout.close();
rin.close();
}
};
sfk samp cpp
#include
#include
#include
#include
#include
#include
// print error message with variable parameters.
int perr(const char *pszFormat, ...) {
va_list argList;
va_start(argList, pszFormat);
char szBuf[1024];
::vsprintf(szBuf, pszFormat, argList);
fprintf(stderr, "error: %s", szBuf);
return 0;
}
// copy text lines from one file into another.
int main(int argc, char *argv[])
{
if (argc < 2)
return 9+perr("specify input and output filename.\n");
char *pszInFile = argv[1];
char *pszOutFile = argv[2];
FILE *fin = fopen(pszInFile , "rb");
if (!fin )
return 9+perr("cannot read %s\n" , pszInFile);
FILE *fout = fopen(pszOutFile, "wb");
if (!fout)
return 9+perr("cannot write %s\n", pszOutFile);
char szBuf[1024];
memset(szBuf, 0, sizeof(szBuf));
while (fgets(szBuf, sizeof(szBuf)-10, fin))
{
char *psz = strchr(szBuf, '\r');
if (psz) *psz = '\0'; // strip cr
psz = strchr(szBuf, '\n');
if (psz) *psz = '\0'; // strip lf
printf("line: \"%s\"\n", szBuf);
strcat(szBuf, "\n");
int nlen = strlen(szBuf);
if (fwrite(szBuf, 1, nlen, fout) != nlen)
return 9+perr("failed to fully write %s\n", pszOutFile);
}
fclose(fout);
fclose(fin);
return 0;
}
sfk samp cmd
@rem windows command shell batch example
@echo off
IF "%1"=="" GOTO xerr01
echo "parameter is %1"
GOTO xdone
:xerr01
echo "please supply a parameter."
echo "example: mybat parm123"
GOTO xdone
:xdone
sfk samp bash
#!/bin/bash
function pmsg {
# uses a local variable mystr
local mystr="info: $1"
echo $mystr
}
myparm1="$1 and $2" # no blanks around "="
if [ "$2" = "" ]; then # requires all blanks
pmsg "please supply two parameters."
else
pmsg "you supplied \"$myparm1\"."
# < -lt > -gt <= -le >= -ge == -eq != -ne
i=1
while [ $i -le 5 ]; do # not "$i < 5"
echo counting: $i # quotes are optional
let i+=1 # not "i += 1" or "$i+=1"
done
fi