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
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'`\\""
.