|
| Et script der bruger informationer fra fil~ Fra : Lars Stokholm |
Dato : 09-04-07 15:52 |
|
Hej folkens.
Jeg skal have lavet et script, der kan hjælpe mig med at klippe
og komprimere en bunke videoklip med transcode.
Jeg havde tænkt mig at give filnavne i stil med:
Grisen flyver[127-2230].mod
Marie flyver[0-470].mod
Som alle ligger i samme mappe. Scriptet skal så ende med at køre):
transcode -i Grisen flyver[127-2230].mod
-o Grisen flyver.avi
-y xvid
-J cut=127-2230
transcode -i Marie flyver[0-470].mod
-o Marie flyver.avi
-y xvid
-J cut=0-470
Jeg skal altså have hevet nogle informationer ud af filnavnene,
som jeg kan sende videre til transcode. Hvordan gør jeg det?
Helst i (c)sh.
| |
Dennis Hansen (09-04-2007)
| Kommentar Fra : Dennis Hansen |
Dato : 09-04-07 17:56 |
|
Lars Stokholm skrev Den. 09-04-2007 16:51:
Hej,
> Jeg skal have lavet et script, der kan hjælpe mig med at klippe og
> komprimere en bunke videoklip med transcode.
>
> Jeg havde tænkt mig at give filnavne i stil med:
>
> Grisen flyver[127-2230].mod
> Marie flyver[0-470].mod
CUT
> Jeg skal altså have hevet nogle informationer ud af filnavnene, som
> jeg kan sende videre til transcode. Hvordan gør jeg det? Helst i
> (c)sh.
Der er sikkert en ekspert eller to, der kan noget smart med sed, der
kan gøre dette meget pænere, og det vil jeg meget gerne se,
men jeg ville hakke mig igennem med
#!/bin/sh
DIR="$1"
for i in "$DIR"/*.mod; do
INFILE=$(basename "$i")
BEFORE=$(echo "$INFILE" | cut -f1 -d '[')
CUTPOINTS=$(echo "$INFILE" | cut -f2 -d '[' | cut -f1 -d ']')
echo "transcode -i \"$i\"
-o \"$BEFORE.avi\"
-y xvid
-J cut=$CUTPOINTS"
done
Det burde virke langt hen af vejen.
Hvis du allerede nu kan undgå mellemrum i filnavne, så er det nok en
god idé.
--
Mvh
Dennis Hansen
| |
Lars Stokholm (09-04-2007)
| Kommentar Fra : Lars Stokholm |
Dato : 09-04-07 21:04 |
|
On 2007-04-09, Dennis Hansen <dennis@badabum.invalid> wrote:
> #!/bin/sh
> DIR="$1"
> for i in "$DIR"/*.mod; do
> INFILE=$(basename "$i")
> BEFORE=$(echo "$INFILE" | cut -f1 -d '[')
> CUTPOINTS=$(echo "$INFILE" | cut -f2 -d '[' | cut -f1 -d ']')
> echo "transcode -i \"$i\"
> -o \"$BEFORE.avi\"
> -y xvid
> -J cut=$CUTPOINTS"
> done
>
> Det burde virke langt hen af vejen.
Mange tak. Man skal jo sætte sit eget præg, så det blev til:
#!/bin/sh
for INFILE in *.[mM][oO][dD]; do
BASENAME=`echo $INFILE | cut -f1 -d '['`
RANGE=`echo $INFILE | cut -f2 -d '[' | cut -f1 -d ']'`
transcode -i "$INFILE"\
-o "$BASENAME".avi\
-y xvid\
--export_asr 3\
-Z 384x216\
-w 600\
-J cut=$RANGE
done
Er der forskel på HEJ=`echo hej` og HEJ=$(echo hej)?
> Hvis du allerede nu kan undgå mellemrum i filnavne, så er det nok en
> god idé.
Dét er der nu ingen problemer med.
| |
Mikael W. Bertelsen (09-04-2007)
| Kommentar Fra : Mikael W. Bertelsen |
Dato : 09-04-07 21:55 |
|
On Mon, 09 Apr 2007 20:04:23 +0000, Lars Stokholm wrote:
> Er der forskel på HEJ=`echo hej` og HEJ=$(echo hej)?
Nej, og så alligevel...
Nogle browsere kan ikke vise "`" korrekt, så hvis scriptet bliver lagt
ud på en hjemmeside, så vil det ikke virke hvis det bliver copy/pastet.
Personligt synes jeg HEJ=$(echo hej) er mere læsbart...
/Mikael
| |
Kent Friis (09-04-2007)
| Kommentar Fra : Kent Friis |
Dato : 09-04-07 23:08 |
|
Den Mon, 09 Apr 2007 22:54:44 +0200 skrev Mikael W. Bertelsen:
> On Mon, 09 Apr 2007 20:04:23 +0000, Lars Stokholm wrote:
>
>> Er der forskel på HEJ=`echo hej` og HEJ=$(echo hej)?
>
> Nej, og så alligevel...
> Nogle browsere kan ikke vise "`" korrekt, så hvis scriptet bliver lagt
> ud på en hjemmeside, så vil det ikke virke hvis det bliver copy/pastet.
>
> Personligt synes jeg HEJ=$(echo hej) er mere læsbart...
Og en ting mere:
Hej=$(echo $(echo hej))
Lav lige den med `
Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).
| |
Klaus Ellegaard (09-04-2007)
| Kommentar Fra : Klaus Ellegaard |
Dato : 09-04-07 23:21 |
|
Kent Friis <nospam@nospam.invalid> writes:
>Hej=$(echo $(echo hej))
>Lav lige den med `
temp=`echo hej` ; Hej=`echo $temp`
....eller lettere reduceret: Hej=hej
Mvh.
Klaus.
| |
Christian E. Lysel (10-04-2007)
| Kommentar Fra : Christian E. Lysel |
Dato : 10-04-07 10:59 |
|
On Mon, 2007-04-09 at 22:07 +0000, Kent Friis wrote:
> Og en ting mere:
>
> Hej=$(echo $(echo hej))
>
> Lav lige den med `
Ok
Hej=`echo ``echo hej`` `
| |
Christian E. Lysel (10-04-2007)
| Kommentar Fra : Christian E. Lysel |
Dato : 10-04-07 11:23 |
|
On Tue, 2007-04-10 at 11:59 +0200, Christian E. Lysel wrote:
> On Mon, 2007-04-09 at 22:07 +0000, Kent Friis wrote:
> > Og en ting mere:
> >
> > Hej=$(echo $(echo hej))
> >
> > Lav lige den med `
>
> Ok
>
> Hej=`echo ``echo hej`` `
Dejligt eksempel, ovenstående er fuldstændig forkert, men giver det
rigtige resultat.
Man kunne også skrive:
Hej=`echo ` `echo hej` ` `
Mindst lige så forkert, dog igen med det rigtige resultat.
Følgende er derimod rigtigt:
Hej=`echo \`echo hej\` `
Men det bliver ikke kønt ved flere niveaer:
echo `ls \`echo \`\`echo 2\`\` \`\`echo 2\`\` \` `
| |
|
|