Script, der selv udpakker RAR?

prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Script, der selv udpakker RAR?

Heysan.

Jeg kunne godt tænke mig at få lidt hjælp til at lave et script, der selv udpakker alle RAR-filer i et dir og dets undermapper, helt automatisk, og sletter rar-filerne igen bagefter.

Er der nogle der kan hjælpe mig på det område?


ajbo
Antal: 898
Tilmeldt:
19-11-2005
User is offline
prooiAntal: 25Tilmeldt:10-01-2009User is onlineRe: Script

#!/bin/bash

rar e arkivnavn.rar
echo "password10"
exit 1

rar e arkivnavn.rar
echo "password11"
exit 1


prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Re: Script, der selv udpakker RAR?

Den må du hellere forklare lidt?

Det jeg gerne vil have den til er, at den også selv finder filerne, så jeg ikke skal angive arkivnavne?


einar.petersen
Antal: 70
Tilmeldt:
18-06-2008
User is offline
Substituer...

f.eks, * og ? er dine venner når du skriver scripts - Prøv at kigge på disse to dokumenter hvis du har interesse for scripting.

BASH Programming - Introduction HOW-TO by Mike G mikkey at dynamo.com.ar

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html ( har et file renaming script hvor du kan se brugen af f.eks. * )

Advanced Bash-Scripting Guide An in-depth exploration of the art of shell scripting Mendel Cooper

http://tldp.org/LDP/abs/html/

Og så skal du kigge på recursive funktioner se. feks. http://www.tech-recipes.com/rx/732/recursive-grep/

------------------------------------------------------------------------
Know someone with MS, ALS, Aphasia or similar problems? Visit http://globability.org - to learn more about completely Free Open Source software currently under development - Read "Walter Kraft and the Alien Menace" - A science fiction originally released in support of charity. Find it and much more on http://einarpetersen.com - If my post has been helpful please feel free to support me and my work!


kop
Antal: 28
Tilmeldt:
26-02-2003
User is offline
Script, der selv udpakker RAR?

Prøv om dette kan hjælpe dig igang

#!/bin/bash

WORK_DIR=""

function rar_test
{
# Hvis der findes rar filer i angiver directory skrives de i filen $WORK_DIR/rar_test
find $1 -name \*.rar >$WORK_DIR/rar_test

while read line
do
# find hvilket directory skal rar filen pakkes ud
bn=$(basename $line)
ch_dir=${line/$bn/""}
# skift til directory hvor rar findes
cd $ch_dir
# brug af x istedet for e opretter evt directories i rar filen
unrar x -inul $line
# Hvordan endte udpakningen af rar fil
result=$?

# Vis resultat af udpakning
if [[ $result -eq 0 ]]; then
echo "$line er pakket ud"
rm $line
# giv besked om rar file er slettet eller ej.
if [[ -f $line ]]; then
echo "$line er ikke slettet"
else
echo "$line er slettet"
# næste echo er kun for at give en blank line mellem filerne
echo
fi
fi
done < $WORK_DIR/rar_test

# fjern midlertidig fil
rm $WORK_DIR/rar_test
}

function show_help {
clear
cat <<- HELP

Eksempel på brug

$0 [directory]

Hvor [directory] er det directory med rar filer der skal pakkes ud

HELP
}

function is_dir {
if [[ -d /dev/shm ]]; then
# Dette er er ram drev
WORK_DIR=/dev/shm
else
WORK_DIR=$(pwd)
fi
}

if [[ $# -lt 1 ]] ; then
show_help
else
clear
is_dir
rar_test $1
fi


prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Re: Script, der selv udpakker RAR?

Hvad så når filendelserne ikke kun er .rar, men også .r0xx osv ?


kop
Antal: 28
Tilmeldt:
26-02-2003
User is offline
Script, der selv udpakker RAR?

De bliver alle pakket ud som de skal, men til gengæld bliver kun .rar slettet :-(


prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Re: Script, der selv udpakker RAR?

#4 Hvis jeg kører dit script direkte fra terminalen således:

prooi@prooi:~/Desktop$ sh rar.sh
rar.sh: 5: function: not found
rar.sh: 39: Bad substitution

hvor min scriptfil ser sådan ud:

#!/bin/bash

WORK_DIR="/data/rartest/"

function rar_test
{
# Hvis der findes rar filer i angiver directory skrives de i filen $WORK_DIR/rar_test
find $1 -name \*.rar >$WORK_DIR/rar_test

while read line
do
# find hvilket directory skal rar filen pakkes ud
bn=$(basename $line)
ch_dir=${line/$bn/""}
# skift til directory hvor rar findes
cd $ch_dir
# brug af x istedet for e opretter evt directories i rar filen
unrar x -inul $line
# Hvordan endte udpakningen af rar fil
result=$?

# Vis resultat af udpakning
if [[ $result -eq 0 ]]; then
echo "$line er pakket ud"
rm $line
# giv besked om rar file er slettet eller ej.
if [[ -f $line ]]; then
echo "$line er ikke slettet"
else
echo "$line er slettet"
# næste echo er kun for at give en blank line mellem filerne
echo
fi
fi
done < $WORK_DIR/rar_test

# fjern midlertidig fil
rm $WORK_DIR/rar_test
}

Får jeg den fejl som skrevet ovenover.

Why?


kop
Antal: 28
Tilmeldt:
26-02-2003
User is offline
Re: Hvis jeg kører dit script direkte fra terminalen således:

Hvilken version af bash benytter du ? ( findes således: bash --version )

Du kan også prøve nedenstående
Gør rar.sh eksekverbar
eksekver rar.sh uden brug af sh ( rar.sh eller hvis rar.sh er i samme mappe ./rar.sh )


prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Re: Script, der selv udpakker RAR?

Bruger version 3.2.39 af bash.

Gjorde filen ekserverbar, og kørte den med ./rar.sh, og det virkede egentlig fint - den fandt filen og skrev den til rar_test.

Så mangler jeg bare at få den udpakket også?
- For det gør den nemlig ikke.


kop
Antal: 28
Tilmeldt:
26-02-2003
User is offline
Re: Script, der selv udpakker RAR?

Har du unrar installeret ?


prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Re: Script, der selv udpakker RAR?

Havde jeg ikke, men det hjalp ikke at installere det - får stadig intet output i form af en fil.

Filerne jeg vil udpakke går fra:
xxx.r01 - xxx.r90 og ender med en xxx.rar

Problemet ligger i, at jeg ikke tror programmet opfatter .r01 filen som en rar fil, og derfor ikke udpakker den..

Alle rar-filerne er en stor rarfil der er splittet op i winrar.


kop
Antal: 28
Tilmeldt:
26-02-2003
User is offline
Re: Script, der selv udpakker RAR?

Den rar og unrar jeg har adgang til er nyere end den du har benyttet.
den udgave jeg har navngiver på en anden måde end de ældre udgaver.
prøv at indsætte nedenstående kode i scriptet mellem disse 2 linier

# brug af x istedet for e opretter evt directories i rar filen
unrar x -inul $line

rar_split=$(echo $line | cut -f1 -d.)
if [[ -n $rar_split ]]; then
list=$(ls $rar_split.r*)
for i in $list
do
a=$(echo $i | cut -f1 -d.)
b=$(echo $i | cut -f2 -d.)
if [[ "$b" != "rar" ]]; then
b=${b//r/.part0}
b="$b.rar"
mv $i $a$b
fi
done
fi

edit:
$1 rettet til $line


prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Re: Script, der selv udpakker RAR?

#12 Forstår ikke helt hvor jeg skal sætte det ind henne?

Lige nu ser koden sådan ud:

#!/bin/bash

WORK_DIR="/data/rartest/"

function rar_test
{
# Hvis der findes rar filer i angiver directory skrives de i filen $WORK_DIR/rar_test
find $1 -name \*.rar >$WORK_DIR/rar_test

while read line
do
# find hvilket directory skal rar filen pakkes ud
bn=$(basename $line)
ch_dir=${line/$bn/""}
# skift til directory hvor rar findes
cd $ch_dir
# brug af x istedet for e opretter evt directories i rar filen
rar_split=$(echo $line | cut -f1 -d.)
if [[ -n $rar_split ]]; then
list=$(ls $rar_split.r*)
for i in $list
do
a=$(echo $i | cut -f1 -d.)
b=$(echo $i | cut -f2 -d.)
if [[ "$b" != "rar" ]]; then
b=${b//r/.part0}
b="$b.rar"
mv $i $a$b
fi
done
fi
unrar x -inul $line
# Hvordan endte udpakningen af rar fil
result=$?

# Vis resultat af udpakning
if [[ $result -eq 0 ]]; then
echo "$line er pakket ud"
rm $line
# giv besked om rar file er slettet eller ej.
if [[ -f $line ]]; then
echo "$line er ikke slettet"
else
echo "$line er slettet"
# næste echo er kun for at give en blank line mellem filerne
echo
fi
fi
done < $WORK_DIR/rar_test

# fjern midlertidig fil
rm $WORK_DIR/rar_test
}

og det virker ihvertfald ikke.


kop
Antal: 28
Tilmeldt:
26-02-2003
User is offline
Re: Script, der selv udpakker RAR?

Prøv om du kan finde en version af unrar der er så gammel at den kan udpakke *.r01 o.s.v.


prooi
Antal: 41
Tilmeldt:
10-01-2009
User is offline
Re: Script, der selv udpakker RAR?

Har du evt et link til en sådan version?


kop
Antal: 28
Tilmeldt:
26-02-2003
User is offline
Re: Script, der selv udpakker RAR?

Her er et par steder hvor du kan hente ældre versioner af unrar

http://rpm.pbone.net/index.php3?stat=3&limit=1&sro...

http://rpmforge.net/user/packages/unrar/

Vær dog opmærksom på at de ældre versione af unrar også kan være afhængig af andre ældre libraries.