Unix Utilities for Win32

16/07/2009 - 12:34 von Daniel Meszaros | Report spam
Hi!

Ich bin kein Shell-Profi, aber ab und kann bekomme ich eine ganz
brauchbare Lösung gebastelt. Auf Windows-Maschinen bediene ich mich
dabei ganz gern der Unix Utilities for Win32, um nicht komplett umdenken
zu müssen. Nun stocke ich ein wenig und wende mich an Euch, in der
Hoffnung einen Kenner der Unix Utilities zu einem hilfreichen Tipp zu
bewegen.

Ich komme mal zum Problem:

Ich habe Ordner, die jeweils mit Bilddateien gefüllt ist. Diese
Bilddateien werden von einem Konvertierungstool zu Filmchen
zusammengefügt. Zuvor wird eine Liste erstellt, in der die
Konvertierungs-Queue gespeichert ist.

Da das Konvertierungsprogramm die folgende Syntax hat...

djv_convert.exe (ERSTE DATEI)-(NUMMER DER LETZTEN DATEI).tga FILM.mov
-PARAMETER

...frage ich also den Namen der ersten Datei sowie die Nummer der
letzten Datei ab:

==
# Define the tools and files
touchcmd="C:/2convert/_tools/touch.exe"
listfile="C:/2convert/list.txt"

# Make sure the list file is existent and empty
$touchcmd $listfile

# Fill the list file with entries for the conversion queue
proceed=1
while [ $proceed -eq 1 ]
do
echo "-"
echo -n "Please type in the folder name: "
read foldername
echo -n "Please type in the name of the first TGA file (without .tga): "
read firsttgafile
echo -n "Please type in the number of the last TGA file: "
read lasttganumber
echo "The MOV file is going to get the name of the folder."
echo "\"./$foldername/$firsttgafile-$lasttganumber.tga\"
\"$foldername.mov\"" >> $listfile
echo "Do you want to add some more folder to the list? [0=No / 1=Yes]? "
read proceed
echo "-"
done

==Eine typische Zeile in der Listendatei wàre dann:
"./ordner1/datei_0001-0300.tga" "ordner1.mov"

Mir wàre es lieber, das Script würde $listfile mit so wenig Usereingaben
wie möglich füttern. Idealerweise greift es sich einen festen Ordner
(z.B. C:/2convert/input_tga), liest die darin enthaltenen Unterordner,
liest in jedem Unterordner den Namen des ersten und letzten TGA-Datei
und bastelt sich das ebenso zusammen.

Wie kann ich aber den Dateinamen der letzten Datei (z.B. datei_0300.tga)
mit den Unix Utilities for Win32 zerpflücken? :-/ Ich bràuchte nur das,
was nach dem letzten Underscore und vor dem Dateisuffix steht.

Mit PHP könnte ich das. Auf meiner Linuxkiste hab ich das, glaub ich,
mal mit "awk" gelöst. Auf der Windowskiste finde ich da nicht rein. :-(

Ich bin für jeden Ratschlag dankbar.

CU,
Mészi.
 

Lesen sie die antworten

#1 Heike C. Zimmerer
16/07/2009 - 14:15 | Warnen spam
Daniel Meszaros writes:

Hi!

Ich bin kein Shell-Profi, aber ab und kann bekomme ich eine ganz
brauchbare Lösung gebastelt. Auf Windows-Maschinen bediene ich mich
dabei ganz gern der Unix Utilities for Win32, um nicht komplett
umdenken zu müssen.



Gibt es einen Grund, diese MSYS vorzuziehen? Rein neugierhalber.


Wie kann ich aber den Dateinamen der letzten Datei
(z.B. datei_0300.tga) mit den Unix Utilities for Win32 zerpflücken?



Wenn die Shell einigermaßen kompatibel ist (über Google und "Unix
Utilities für Windows" fand ich keinen Hinweis auf die Shell) geht das
z.B. mit den üblichen Substitutionen:

name=datei_0300.tga
num="${name##*_}"
num="${num%.*}"

Jetzt steht die Nummer in $num. Falls das nicht geht, nochmal fragen.
Die gàngigen Text-Utilites scheinen ja auch dabei zu sein.

Gruß,

Heike

Ähnliche fragen