Intereting Posts
Управление заданием по сценарию Bash Где rsyslog поддерживает объект local0? Разве популярные дистрибутивы Linux проверяют бинарные пакеты? Как я могу добраться до удаленного ssh-сервера через свой http-прокси (80-й порт)? Монетный двор – не удается войти в «домашний каталог …» X-Forwarding: символы не отображаются должным образом Печать через сервер Samba без записи пароля в виде открытого текста Можно ли указать пользовательскую команду перед запуском интерактивной сессии bash? ограничение скорости линукса tbf не функционирует, как ожидалось Ввод Linux SPDIF не работает Как отменить нежелательные сообщения об ошибке из команды ssh? Заменить несколько строк в текстовом файле фиксированным шаблоном Каков правильный способ сжать раздел LVM? Проблемы с драйвером адаптера Wi-Fi Debian Как я могу наблюдать за созданием определенного «триггерного файла»?

Завершить скрипт с помощью индикатора прогресса zenity

(GNOME2, Ubuntu 10.04 LTS) Я сделал сценарий nautilus, так что, если у меня есть каталог, полный различных кодеков, тогда мне просто нужно щелкнуть правой кнопкой мыши в этой папке -> Сценарии -> THISSCRIPT.txt, затем престо, рекурсивно преобразует все видеофайлы (идентифицированные по типу видео) в x.264-кодек с 128-килобайтным mp3 в avi. Так что они будут иметь небольшой размер + хорошее качество. Это работает, здорово!

ВОПРОС : Если я нажимаю «Отмена» на полосе хода Zenity, тогда mencoder не заканчивается. Как я могу это сделать? Я имею в виду, что мне нужно Это, если я нажму «Отмена» на полосе хода Zenity, это прекратит работу mencoder. Как это сделать?

#!/bin/bash which mencoder > /dev/null 2>&1; if [[ $? -ne 0 ]]; then echo -e '\nerror, no mencoder package detected'; exit 1; fi which zenity > /dev/null 2>&1; if [[ $? -ne 0 ]]; then echo -e '\nerror, no zenity package detected'; exit 1; fi HOWMANYLEFT=0 find . -type f | xargs -I {} file --mime-type {} | fgrep "video/" | rev | awk 'BEGIN {FS="/oediv :"} { print $NF}' | rev | while read ONELINE do if file "$ONELINE" | egrep -qvi "x.264|h.264" then echo $ONELINE fi done | sed 's/^.\///' | tee /tmp/vid-conv-tmp.txt | while read ONELINE do HOWMANY=`wc -l /tmp/vid-conv-tmp.txt | cut -d " " -f1` mencoder "$ONELINE" -o "OK-$ONELINE.avi" -ovc x264 -x264encopts bitrate=750 nr=2000 -oac mp3lame -lameopts cbr:br=128 > /dev/null 2>&1 HOWMANYLEFT=`expr $HOWMANYLEFT + 1` echo "scale=10;($HOWMANYLEFT / $HOWMANY) * 100" | bc | cut -d "." -f1 done | zenity --progress --text="Processing files ..." --auto-close --percentage=0 

Вам нужно использовать --auto-kill . Я немного изменил скрипт (мне нравится использование --auto-kill rev , но есть и другие способы 🙂 … Вот один.

Я использовал yad вместо zenity . Это вилка зенита , и команды в основном одинаковы. Из того, что я читал, яд более активно развивается и имеет больше возможностей (и для меня это был хороший шанс сыграть с ним). Параметр --auto-kill работает как с zenity, так и с yad .

Также как показано процент, скрипт показывает количество так много (например, 3 из 8) плюс имя текущего файла. Процент вычислений использует awk (только потому, что мне удобно с его синтаксисом).

Повторите свой конкретный вопрос, просто --auto-kill должно быть достаточно.

 for p in mencoder yad ;do which $p >/dev/null 2>&1 || { echo -e '\nerror, no $p package detected'; exit 1; } done list="$(mktemp)" find . -type f -print0 | # -print0 caters for any filename xargs --null file --print0 --mime-type | sed -n 's|\x00 *video/.*|\x00|p' | tr -d $'\n' | xargs --null file --print0 | sed -nr '/\x00.*(x.264|h.264)/!{s/^\.\///; s/\x00.*//; p}' >"$list" # At this point, to count how many files there are to process, break out of the pipe. # You can't know how many there are until they have all passed through the pipe. fct=0; wcfct=($(wc "$list")); while IFS= read -r file ;do ((fct+=1)); pcnt=$(awk -v"OFMT=%.2f" "BEGIN{ print (($fct-1)/$wcfct)*100 }") echo "# $pcnt%: $fct of $wcfct: $file"; echo $pcnt mencoder "$file" -o "OK-$file.avi" -ovc x264 -x264encopts bitrate=750 nr=2000 -oac mp3lame -lameopts cbr:br=128 >/dev/null 2>&1 done <"$list" | yad --title="Encoding Progress" --progress --geometry +100+100 --auto-close --auto-kill rm "$list"