Teile aus Dateinamen auslesen

chefkoch

Mitglied
Dabei seit
15.05.06
Beiträge
9
#1
Hallo,

um mein Script fertig zu bekommen brauchte ich noch eine function die einen Teil eines Dateinamens erkennt und dann entsprechend die FixFoto functionen durchführt. Den vollständigen Dateinamen bekomme ich als String hin, nur dann kann ich die CharAt() nicht nutzen da ich kein Objekt habe. Gibts da irgendeinen Tipp wie man eine bestimmt Position eines Dateinames auslesen kann? Ich komme da einfach nicht weiter.

hier ein Auszug aus dem Script:

Function Rahmenwahl(name)
name = CStr(name)
name = name.CharAt(8)
If name = "0" Then
rahmen = "XXX.JPG"
Else
End If
End Function

Function Bilderoeffnen()
Dim f, fc, f1, s
Set f = fso.GetFolder("XXX")
Set fc = f.Files
For Each f1 in fc
Rahmenwahl(f1.name)
Bildbearbeiten(f1.name)
Next
End Function



MFG Chefkoch
 

chefkoch

Mitglied
Dabei seit
15.05.06
Beiträge
9
#2
AW: Teile aus Dateinamen auslesen

Habe es selber hinbekommen, funktioniert damit 1A:


Function Rahmensuche(Zeichenfolge)
Dim regAus, Uebereinstimmung, Uebereinstimmungen
Set regAus = New RegExp
Zeichenfolge = CStr(Zeichenfolge)

regAus.Pattern = "CB01"
regAus.IgnoreCase = True
regAus.Global = True
Set Uebereinstimmungen = regAus.Execute(Zeichenfolge)
For Each Uebereinstimmung in Uebereinstimmungen
rahmen = "XXXX\CB01.tif"
rahmenzahl = 1
Next

regAus.Pattern = "BB01"
regAus.IgnoreCase = True
regAus.Global = True
Set Uebereinstimmungen = regAus.Execute(Zeichenfolge)
For Each Uebereinstimmung in Uebereinstimmungen
rahmen = "XXXX\BB01.tif"
rahmenzahl = 1
Next

RegAusTest = RetStr
End Function

Rahmensuche(f1.name)
 

hhoefling

Mitglied
Dabei seit
02.01.04
Beiträge
3.994
Standort
NRW/Ruhrgebiet
Trophäen
4! 2*
#3
AW: Teile aus Dateinamen auslesen

Tut mir Leid.
Aber den Sinn oder Unsinn deines Menüs "Rahmensuche ala Chefkoch" kann ich noch nicht erkennen.
Da werden ein und der selben Variablen (rahmen,rahmenzahl) nacheinander verschiedene Werte
Zugeweisen, und dann kommt da noch ein "RegAusTest = RetStr" aus dem Nichts.

Erzähl doch mal was das ganze soll und zeige das ganze Script.
 

chefkoch

Mitglied
Dabei seit
15.05.06
Beiträge
9
#4
AW: Teile aus Dateinamen auslesen

Das sind Teile aus einem Script das verschiedene Sachen durchführt. z.B. Kopiert es Dateien aus beliebig vielen Unterordnern, prüft dann die Dateinamen auf einen bestimmten Bestandteil welchem dann ein Rahmen zugeordnet wird oder nicht. Dann wird der entsprechende Rahmen um das Bild gelegt und die Datein in einem Ordner fertig abgelegt. Zudem wird ein Protokoll geschrieben, das wars im großen und ganzen..
Falls jemand etwas damit anfangen kann hier das Ganze ala Chefkoch:

So sieht das ganze dann aus:



Function Dateienkopieren()
Dim f, f1, s, sf, text, i
Set f = fso.GetFolder("c:\buckelmade\karte\dcim")
Set sf = f.SubFolders
Set tf = fso_OpenTextFile("c:\buckelmade\protokol.txt", 1, True)
text = tf.ReadAll
tf.close
Set tf = fso_OpenTextFile("c:\buckelmade\protokol.txt", 2, True)
tf.write(text)
tf.writeLine("---------------------------------------------------------")
tf.writeLine("Folgende Bestellungen bearbeitet am " & date & " um " & time)
tf.WriteBlankLines 1
For Each f1 in sf
tf.WriteLine(f1.name)
fso.CopyFile "c:\buckelmade\karte\dcim\" & f1.name & "\*.*", ordnernamefertig
Next
tf.WriteBlankLines 1
tf.close()
End Function

Function Bildbearbeiten(name)
dim text
text = ""
call FF_LoadImage(ordnernamefertig & name)
call FF_Scale(392,261,true)
call FF_ExtendCanvas(57,733,53,281,255,255,255)
call FF_PushImage()
call FF_LoadImage(rahmen)
call FF_SwapImage()
call FF_LogoMix(text,100,0,0,100,0,16777215,1,0)
call FF_SaveImage(ordnernamefertig & name,100)

End Function

Function Bilderzaehlen()
Dim f, fc , f1, s
Set f = fso.GetFolder(ordnernamefertig)
Set fc = f.Files
For Each f1 in fc
anzahl = anzahl + 1
Next
schritt = 100 / anzahl
call FF_SetProgress(schritt,100)
End Function

Function Rahmensuche(Zeichenfolge)
Dim regAus, Uebereinstimmung, Uebereinstimmungen
Set regAus = New RegExp
Zeichenfolge = CStr(Zeichenfolge)

regAus.Pattern = "CB01"
regAus.IgnoreCase = True
regAus.Global = True
Set Uebereinstimmungen = regAus.Execute(Zeichenfolge)
For Each Uebereinstimmung in Uebereinstimmungen
rahmen = "c:\buckelmade\CB01.tif"
rahmenzahl = 1
Next

regAus.Pattern = "BB01"
regAus.IgnoreCase = True
regAus.Global = True
Set Uebereinstimmungen = regAus.Execute(Zeichenfolge)
For Each Uebereinstimmung in Uebereinstimmungen
rahmen = "c:\buckelmade\BB01.tif"
rahmenzahl = 1
Next

RegAusTest = RetStr
End Function

Function Bilderoeffnen()
Dim f, fc, f1, s
Set f = fso.GetFolder(ordnernamefertig)
Set fc = f.Files
For Each f1 in fc
schritt2 = schritt + schritt2
call FF_SetProgress(schritt2,100)
rahmenzahl = 0
call Rahmensuche(f1.name)
If rahmenzahl = 1 Then Bildbearbeiten(f1.name)

Next
End Function

function ordnernameanlegen()
ordnernamefertig = "C:\buckelmade\" & date & "_fertig\"
End Function

Function Ordnersichern()
fso.MoveFolder "c:\buckelmade\karte\dcim\*.*", "c:\buckelmade\safe\"
End Function


Dim fso, ordner, s, anzahl, schritt, schritt2, fenster, rahmen, rahmenzahl, ordnernamefertig, tf
ordnernameanlegen()
anzahl = 0
schritt2 = 0
fenster = msgbox(".....",65,"Achtung")

Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists(ordnernamefertig)) Then
fenster = 0
Else
End If
if fenster = 1 Then
fso.CreateFolder (ordnernamefertig)
Dateienkopieren()
Bilderzaehlen()
Bilderoeffnen()
Ordnersichern()
fenster = msgbox("....",64,"Script erfolgreich ausgeführt..")
Else
fenster = msgbox("....",48,"Achtung")
End If

 
Zuletzt bearbeitet:

hhoefling

Mitglied
Dabei seit
02.01.04
Beiträge
3.994
Standort
NRW/Ruhrgebiet
Trophäen
4! 2*
#5
AW: Teile aus Dateinamen auslesen

Mann, oh mann.
Das sieht ja noch nach jede Menge Arbeit aus.
Scheint ja dein erstes Kochrezept zu werden.



Code:
Function Bilderzaehlen()
Dim f, fc , f1, s
Set f = fso.GetFolder(ordnernamefertig)
Set fc = f.Files
For Each f1 in fc
anzahl = anzahl + 1
Next
schritt = 100 / anzahl
call FF_SetProgress(schritt,100)
End Function
Meinst du nicht z.b deine Funktion Bilderzaehlen könnte auch so angerichtet werden?
Sieht irgendwie einfacher aus.

Code:
Function Bilderzaehlen()
 Dim f

 Set f = fso.GetFolder(ordnernamefertig)
  anzahl = f.Files.count
  schritt = 100 / anzahl
  call FF_SetProgress(schritt,100)
End Function



Auch könntest du dir mal die Dokumentation von OpenTextFile ansehen.
(z.b http://www.devguru.com/Technologies/vbscript/QuickRef/filesystemobject_opentextfile.html )
Da gibt es "ForAppending" dann kannst du dir das umkopieren des Protokolles sparen.

Aber ich bin nicht der VBA Guru....
 

chefkoch

Mitglied
Dabei seit
15.05.06
Beiträge
9
#6
AW: Teile aus Dateinamen auslesen

Richtig, das erste und es funktioniert, was will man mehr ;-)

Danke für die Tips!
 
Oben