Nowe posty

Autor Wątek: delikatna poprawka skryptu pakujacego  (Przeczytany 2357 razy)

slawko

  • Gość
delikatna poprawka skryptu pakujacego
« dnia: 2012-05-27, 18:39:35 »
Witam,
mam wielka posbe do kogos kto programuje w bashu. mam skrypt ktory kopiuje plik lub folder do rar dodaje haslo dzieli go na czesci no i wybieramy metode kompresji. wszytko ok tylko potrzebuje abym mogl zamiast wybierac folder lub plik  od razu wybrac kilka plikow i katalogow (zebym mogl zaznaczac np z kontrolem).
zamieszczam kod

#!/bin/bash

#Autor: DaFim

rodzaj=`zenity --list --title "Kompresja" --text "Wybierz co chcesz skompresować" --radiolist --column "" --column "Dostępne opcje:" FALSE "plik" FALSE "folder"`

 

        if [ "$rodzaj" = folder ] ; then

            wej=`zenity --file-selection --title="Wybierz folder do podzielenia" --directory`

 

            if [ "$?" = 1 ] ; then

                       exit

            fi

        else

            wej=`zenity --file-selection --title="Wybierz plik do podzielenia"`

 

            if [ "$?" = 1 ] ; then

                       exit

            fi

        fi

 

wyj=`zenity --file-selection --save --title="Podaj nazwę oraz wybierz miejsce zapisu." --filename "$wej"`

 

        if [ "$?" = 1 ] ; then

                       exit

        fi

 

rozmiar=`zenity --entry --title "Wybierz rozmiar podzielonych części" --text "Podaj rozmiar części i jednostkę np 9m.

(0=brak dzielenia, 1k=1kb, 1m=1mb)" --width "400" --entry-text "0"`

        if [ "$rozmiar" = "" ] ; then

                       exit

        fi

 

kompresja=`zenity --list --title "Wybór bitrate" --text "Wybierz metodę kompresji:

 

        m0 - kompresja I stopnia (najsłabsza)

        m1 - kompresja II stopnia

        m2 - kompresja III stopnia

        m3 - kompresja IV stopnia

        m4 - kompresja V stopnia

        m5 - kompresja VI stopnia (najmocniejsza)" --radiolist --column "" --column "Dostępne metody kompresji" --height "400" FALSE "m0" FALSE "m1" FALSE "m2" FALSE "m3" FALSE "m4" FALSE "m5"`

 

        if [ "$?" = 1 ] ; then

        exit

        fi

 

haslo=`zenity --entry --title "Podaj hasło" --text "Podaj hasło lub pozostaw puste" --width=400 --entry-text ""`

        if [ "$haslo" = "" ] ; then

        rar a -ep1 "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej"

        else

        rar a -ep1 "-p$haslo" "-hp$haslo" "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej"

        fi

zenity --info --text="Kompresja zakończona"
probowalem opcja --multiple tam przy wyborze plikow i za cholere nie chce mi sie dodac wybrane pliki do rar. jakby ktos moglby mi to poprawic bylbym bardzo wdzieczny!
 z gory dziekuje za odpowiedzi i pozdrawiam

slawko

  • Gość
delikatna poprawka skryptu pakujacego
« Odpowiedź #1 dnia: 2012-05-28, 16:09:54 »
Odświeżam temat. Czy mógłby mi ktos pomóc??? bardzo mi na tym zależy, a czas mnie goni...

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
delikatna poprawka skryptu pakujacego
« Odpowiedź #2 dnia: 2012-05-28, 17:00:15 »
Problem w tym, że zenity zwraca listę plików oddzielonych znakiem pionowej kreski, oraz bash, który interpretuje taką listę plików jako jeden plik, nawet po zamianie "|" na spacje.

Musisz zrobić coś w tym stylu:
eval "rar a test.rar \\"`zenity --file-selection --multiple | sed -e 's/|/\\" \\"/g'`\\""
.

slawko

  • Gość
delikatna poprawka skryptu pakujacego
« Odpowiedź #3 dnia: 2012-05-28, 18:40:10 »
dzieki wielkie za odpowiedz ale może mógłbys mi to jeszcze jakos w ten ten kod z pierwszego posta wkomponowac bo srednio sie czuje narazie w bashu, a cos to mi nie chce wyjsc...

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
delikatna poprawka skryptu pakujacego
« Odpowiedź #4 dnia: 2012-05-28, 19:14:31 »
Raczysz żartować.

slawko

  • Gość
delikatna poprawka skryptu pakujacego
« Odpowiedź #5 dnia: 2012-05-28, 19:23:11 »
kurde sory, myslalem ze nie ma z tym duzo pracy i trzeba to ustawic w ktoras linie. w takim razie moze ta opcja ktora mi podales jakos wsółpracowac z całoscia tego mojego kodu? moze jakas wskazówke mi podasz jak to zrobic? naprawde jestem poczatkujacy w tym temacie.