addhead | addtail | count | difflines | filter | head | joinlines | linelen | load | ofilter | perline | printloop | replace | run | runloop | snapto | sort | strings | tail | xed | xex | xreplace | Команда: run sfk run "ваша команда $file [$relfile] [...]" [-yes] [-nohead] [-quiet] [...] запустить самоопределяемую команду для каждого имени файла или каталога. в вашей командной строке вы можете указать: $file - вставьте полное имя файла, включая путь. $quotfile или $qfile - так же, как $file, но с кавычками "". $relfile или $qrelfile - вставить относительное имя файла без пути. $base или $qbase - относительное базовое имя файла без расширения. $ext или $qext - расширение имени файла. foo.bar.txt имеет расширение .txt. $path или $qpath - путь (директория) без имени файла. $relpath или $qrelpath - подпуть относительно стартовой папки. $ufile или $upath — принудительно использовать косую черту «/» в стиле unix на выходе. $qufile или $qupath — сочетание слэшей и кавычек unix. $since или $qsince - с опцией -sincediff: имя справочного файла. $text или $qtext - одна запись вводимого текста, аналогично $file. $targ или $qtarg - с параметром -tomake: имя целевого файла. всегда предпочитайте формы 'q' формам без кавычек: как только есть имя файла содержащие пробелы, например X:\the src files\test one.txt, вам понадобятся цитаты, или вам нужно вручную вставить экранированные кавычки \" или \q (см. 3-й пример ниже). вы также можете использовать $quotrelfile, $quotsince, $quottext для большей ясности. если вы укажете только выражения $path, будут обработаны только каталоги. в командах цепочки из одного слова, таких как "+run vi", "$qfile" добавляется автоматически. дальнейшая поддержка шаблонов: -spat активирует шаблоны косой черты, такие как \t \q \xnn и т. д. -upat синтаксис в стиле unix, используя # вместо $ опции -Да действительно казнить. по умолчанию просто имитировать то, что будет сделано. вы также можете ввести run. (с точкой) в качестве быстрого подтверждения. -nohead не отображает информационный текст [имитация:]. -noinfo, если вы не используете $text, sfk проверяет имена входных файлов 1. если они содержат пробелы, но внутри команды нет кавычек. 2. если кажется, что они используют неправильный символ разделителя пути. в обоих случаях печатается напоминание. если ты знаешь, что твоя команда не требует изменений, добавьте -noinfo или используйте $text вместо $file. -quiet не повторяет команды перед выполнением. -relnames удаляет имена корневых каталогов из имен файлов. -i[файлы] обрабатывать текст или список имен файлов из стандартного ввода. -idirs обрабатывает список имен каталогов из стандартного ввода. на стандартном вводе строки примечаний '#' и пустые строки пропускаются. примечание: «sfk.exe <list.txt» поддерживает только 4 КБ для list.txt под Windows. "type list.txt | sfk.exe" поддерживает неограниченную длину потока. -nofile[имена] с цепочкой, не создает записи имен ":file ". -printcmd вывести на консоль полную команду, которая выполняется. -stoprc=n остановить обработку, если команда возвращает код возврата >= n. формат командной строки с опцией -spat поддерживаются косые черты типа \t \q \xnn. из-за синтаксических ограничений командной оболочки это может помочь - использовать \q вместо \" (избегает неправильного подсчета кавычек в оболочке) - использовать \x26 вместо & (если амперсанд ведет себя неожиданно) раскрытие переменной в кавычках при использовании переменных sfk, которые содержат имена файлов, например запустить "копировать #(src) #(dst)" тогда пробелы в именах файлов требуют заключения в кавычки. при использовании -спать и \q могут возникнуть конфликты, если само имя файла содержит известные шаблоны косой черты, такие как \t в файле 'mydir\thebar.txt'. чтобы избежать этого, вы можете использовать (только с запуском sfk): запустить "копировать #(qsrc) #(qdst)" который будет заключать содержимое переменных в двойные кавычки. многострочные параметры в кавычках поддерживаются в скриптах с помощью парм-трима. введите "скрипт sfk" для деталей. временные или постоянные выходные файлы если вывод запуска подвергается пост-обработке с помощью цепочки команд, например, run ... +filter, sfk создает временные файлы для сбора вывода. по умолчанию эти файлы удаляются по завершении выполнения. скажите «Параметры справки sfk», чтобы узнать больше об этом. укажите -to targetdir\$file для записи вывода команды в постоянный целевой набор файлов. необходимые каталоги создаются автоматически. -to принимает ту же маску, что и сам запуск, например, -to "mydir\$path\$base.tmp" по умолчанию стандартный вывод И стандартный поток ошибок записываются в файл. добавьте 2>nul к вашей команде, чтобы удалить поток ошибок. код возврата по переменной переменная sfk run.lastrc содержит код возврата внешнего называется программа. если было обработано несколько файлов, то он содержит только rc последнего файла. примечания по цепочке команд sfk run "...$path..." +nextcmd: будет передавать каталоги, а не имена файлов. sfk run ... -to tmp\$file +nextcmd: будут передаваться имена выходных файлов, а не входные. sfk run ... +run: будет передавать неизмененный список входных имен файлов. смотрите также sfk perline запускает команды sfk для каждой строки ввода текста. sfk runloop запускает команды, используя счетчик циклов. веб-ссылка http://stahlworks.com/sfk-run Примеры sfk run "attrib -R $qfile" -quiet testfiles\FooBank\BarDriver удаляет атрибут только для чтения для всех файлов в BarDriver sfk запустить "<img src=$quottext>" -dir . -файл .jpg -без заголовка >index.html создать список изображений в формате html из всех изображений в формате jpeg (используя только симуляцию). обратите внимание, что опция -nohead удаляет информационные текстовые строки [симуляция:]. введите список каталогов.txt | sfk run -idirs "xcopy \"x:\$path\" \"z:\$path\" /I /D" обновить-копировать все директории из dirlist.txt с x: на z: sfk run "diff oldsrc\$file newsrc\$file" -relnames -sincediff oldsrc newsrc сравните каталоги, запустите «diff» для всех файлов с разным содержимым. sfk run "diff $qsince $qfile" -sincediff oldsrc newsrc то же, что и выше, только короче и безопаснее (включая кавычки вокруг имен файлов). sfk запустить "zip update.zip $qfile" - с 20070131 . .java .jsp собрать файлы .java и .jsp, добавленные/измененные с 31 января 2007 г., в zip-файл. sfk список тестовых файлов .txt + запустить vi открыть все файлы .txt в vi. $qfile добавляется автоматически. sfk сел . .avi +run "ffmpeg -i $file -f image -t .02 thumbs\$base-%d.jpg" извлечь первое изображение из всех фильмов .avi, видео с помощью ffmpeg. sfk сел -с 30м . .cpp .hpp +run -printcmd "rm $path/$base.o" удалить все объектные файлы исходных кодов, измененные за последние 30 минут sfk echo -lines 100 101 102 +run "showstatus.bat $text" запустите showstatus.bat три раза с заданными номерами, например, локальными IP-адресами. sfk sel soundlib .wav -tomake "outdir\$base.mp3" + запустить "ffmpeg -i $qfile $qtarg" для всех файлов .wav в soundlib, у которых нет файла .mp3 или есть более старый файл .mp3 внутри outdir запустите команду ffmpeg для преобразования из .wav в .mp3. sfk -exectime запустить. "скопировать in.dat out.dat" измерить время, необходимое для запуска команды копирования. sfk -var run "myprog.exe" -yes +tell "myprog rc: #(run.lastrc)" запустите внешнюю программу myprog.exe и сообщите ее код возврата. Не пытайтесь выполнить оператор полного цикла за ONE GO. Почти наверняка что-то пойдет не так (выбраны не те файлы, синтаксическая ошибка в самой команде), и вы в конечном итоге со многими неправильными выходными файлами. Вместо этого используйте ТРИ ШАГА: 1. методом проб и ошибок найти правильный набор файлов: sfk запустить "echo $quotfile" мой каталог Это просто покажет все имена файлов из «mydir». никакая команда не выполняется на эти файлы, так что ничего плохого не происходит. почти наверняка вы заметили что включено слишком много файлов. Возможно, вам нужно добавить «-nosub», чтобы исключить подпапки или добавьте дополнительные сведения о выбранном файле, например: sfk запустить "echo $quotfile" mydir .jpg .jpeg что уменьшает набор файлов до файлов .jpg и .jpeg в «mydir». 2. Замените «эхо» на фактическую команду, все еще работающую в режиме симуляции. sfk run "copy $quotfile \"d:\pic\small_$base.jpg\"" mydir .jpg .jpeg Это имитирует копирование всех изображений из mydir в d:\pic с префиксом их имени. на «small_» и убедитесь, что все расширения целевых файлов только «.jpg». 3. Когда вы будете удовлетворены результатами моделирования, добавьте «-yes». |