VisualBasic VBScript: Files zählen und den Wert in einem Loop verarbeiten

HeavensBlade

Ensign
Registriert
Feb. 2007
Beiträge
145
Hallo zusammen,
ich versuche ein VBScript zu schreiben, welches mir einen .rss Feed anlegt.
Das anlegen der Datei und das Einfügen des Headers habe ich bereits geschafft.

Code:
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(".\feed.rss", True)
MyFile.WriteLine("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbcrlf & "<rss version=""2.0"" xmlns:media=""http://search.yahoo.com/mrss"">" & vbcrlf & "<channel>")
MyFile.Close

Ich habe die Problemstellung hier schon einmal geschildert.

Es fehlt also noch der teil des scripts, der die Anzahl der Dateien in einem Subverzeichnis ausgibt und dann einen Loop so oft ausführt wie Dateien gefunden wurden.
Nach jedem eingefügten Item soll der Dateiname +1 zum Vorgänger sein, bei 001.jpg angefangen.

Ich habe bei google diverse Foreneinträge zu Filezählern gefunden, musste allerdings feststellen das Codesegmente wie
Code:
Dim fso
    Set fso = New FileSystemObject
    Dim Verzeichnis
    Set Verzeichnis = fso.GetFolder("C:\Meinverzeichnis")
'Anzahl der Dateien im Odrner (ohne Unterverzeichnisse):
    MsgBox Verzeichnis.Files.Count
VB sind und von VBS nicht unterstützt werden.

Hat jemand einen Ansatz mich vor der Verzweiflung zu bewahren?
 
Ich habe dein Beispiel mal um den Loop erweitert:

Code:
Dim fso, MyFile

Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(".\feed.rss", True)
MyFile.WriteLine("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbcrlf & "<rss version=""2.0"" xmlns:media=""http://search.yahoo.com/mrss"">" & vbcrlf & "<channel>")
MyFile.Close


Dim Verzeichnis, fso2, AnzDateien, Datei
Dim Dateiname
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set Verzeichnis = fso2.GetFolder("c:\")

AnzDateien = Verzeichnis.Files.Count
Datei = 1


Do While (Datei <= AnzDateien )
  Dateiname = string(3,"0") 
  Dateiname = Right(Dateiname & Datei,3) & ".jpg"
  MsgBox Dateiname
  Datei = Datei + 1 
Loop

Den konkreten Einbau in dein Script mußt du natürlich noch selber machen.
 
Ok, das ist schon mal ein gewaltiger schritt nach vorn.
Das Problem ist, dass ich bisher keinerlei Erfahrung mit VB habe. Ich habe jetzt den Dateipfad geändert, und die Zählweise etwas geändert, da ich das Script in einen Ordner packen möchte und er mir da die Datei erstellen soll. Habe also
Code:
AnzFotos = AnzDateien - 2

Und AnzFotos für die Ausführung des Loops gesetzt, da er ja direkt die .rss Datei erstellt, und sowohl die .rss Datei als auch das Script von der Dateianzahl abgezogen werden sollen.

Wie schreibt er mir die Dateinamen denn jetzt in die Datei rein, statt für jedes vorhandene Foto einen Dialog zu öffnen den ich mit Ok bestätigen muss?
Ich habs mit
Code:
Do While (Datei <= AnzFotos )
  Dateiname = string(3,"0") 
  Dateiname = Right(Dateiname & Datei,3) & ".jpg"
  [B]MyFile.Writeline ("Dateiname")[/B]
  Datei = Datei + 1 
Loop
versucht, aber da erklärt er mir, beim fett gedruckten sei die Objektvariable nicht gesetzt.
Ausserdem weiss ich noch nicht so ganz, wie ich es realisieren soll, dass er vor und hinter den Dateinamen noch entsprechende texte á la <item> etc einfügt.

Oder sollte ich bei den Definitionen für den Loop vielleicht definieren, dass z.B. FeedFile = .\feed.rss oder so ist? Und wie würde ich das dann machen, mit dim oder mit set?
 
Zuletzt bearbeitet:
So, sorry, daß ich mich gestern nicht gemeldet habe.

Ich habe das Coding nochmal überarbeitet und auch das Schreiben in der Datei realisiert. Ganz klar ist mir noch nicht, wieso die Dateien hochgezählt werden, aber Du wirst schon wissen wieso.

Ich habe die Variablendefinitionen nach oben gepackt, ein bisschen was umgestellt und ein paar Kommentare hinzugefügt:

Code:
Dim fso, MyFile
Dim Verzeichnis, fso2, AnzFotos, Datei
Dim Dateiname

' Anzahl der Dateien bestimmen, WurzelVerzeichnis setzen
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set Verzeichnis = fso2.GetFolder("C:\Meinverzeichnis")
AnzFotos = Verzeichnis.Files.Count - 2

' Kopf
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(".\feed.rss", True)
MyFile.WriteLine("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>")
MyFile.WriteLine("<rss version=""2.0"" xmlns:media=""http://search.yahoo.com/mrss"">")
MyFile.WriteLine(space(2) & "<channel>")

' Item Sektion
Datei = 1

Do While (Datei <= AnzFotos )
  MyFile.WriteLine(space(4) & "<item>")

  Dateiname = string(3,"0") 
  Dateiname = Right(Dateiname & Datei,3) & ".jpg"
  MyFile.WriteLine(space(6) & "<title>" & Dateiname & "</title>")
  MyFile.WriteLine(space(6) & "<link>" & Verzeichnis & "\" & Dateiname & "</link>")

  MyFile.WriteLine(space(4) & "</item>")

  Datei = Datei + 1 
Loop

MyFile.WriteLine(space(2) & "</channel>")
MyFile.WriteLine("</rss>")

MyFile.Close
 
Zuletzt bearbeitet: (habe nochmal ein wenig korrigiert)
Zurück
Oben