M4tRiX Geschrieben 9. März 2009 Geschrieben 9. März 2009 Hallo zusammen, eigentlich beschreibt der Titel meine Frage schon. In einem Ordner befinden sich verschiedene Dateien. Nun muss ich gucken welche Datei die neuste ist (Erstelldatum) und dann verschieben und umbennen. Dim fso, f, strDateCreated Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile("C:\temp\xxxx\an.bat") strDateCreated = f.DateCreated MSGBOX strDateCreated Das ist der Code, so krieg ich zumindest schon mal das Erstelldatum einer einzigen Datei raus. Das Problem ist jetzt aber das ich nicht den ganzen Ordner durchsuchen kann sondern nur eine Datei. Zum anderen gibt es in diesem Ordner 2 Arten von Dateien.. Einmal xy(dann irgendeine Zahl) und einmal ab(dann irgendeine zahl). Ich soll jedes mal für beide art die neuste Datei finden. ich hoffe ihr könnt mir helfen, kleine Vorwahnung.. Hab wirklich kaum eine Ahnung von VBS. Alles aus dem Internet zusammen gesucht. DANKE Gruß Zitieren
Amstelchen Geschrieben 9. März 2009 Geschrieben 9. März 2009 FileSystemObject ist schon richtig. iteriere einfach durch die Files eines Folder und sieh dir die eigenschaften des File an. Files Collection s'Amstel Zitieren
Gast Kreakworld Geschrieben 10. März 2009 Geschrieben 10. März 2009 is doch super wenn du das schon hinbekommen hast. jetzt ließt du dir den Ordnerinhalt komplett ein, schreibst dir die werte in ein Array, und gehst dann in einer schleife durch, welches das jüngste ist, wenn ja, dann überschreib es mit der variablen ab_newest und xy_newest. ob ab oder xy musst du einfach vorher überprüfen mit einer if-abfrage. den schweren teil hasst du schon hinter dir. gruß, kre4k Zitieren
M4tRiX Geschrieben 11. März 2009 Autor Geschrieben 11. März 2009 Morgen zusammen, vielen Dank erstmal für eure Hilfen! @Kreakworld: Ja genauso hatte ich es vor, das Problem ist nur, das ich einfach die Syntax noch nicht von VBS kenne und dadurch nicht weiß wie ich die if-schleife aufbauen muss (generell schon aber mich irritiert VBS sehr weil irgendwie überall steht "As" oder so...:old:confused: @Amstelchen: Leider weiß ich nicht wie ich den Code bei Microsoft verändern müsste damit er für mich funktioniert. was heißt folgendes? For Each f1 in fc s = s & f1.name s = s & "<BR>" Next ShowFolderList = s Zitieren
Gast Kreakworld Geschrieben 11. März 2009 Geschrieben 11. März 2009 also als erstes keine if-schleifen. dann bleibt dir aber nichts anderes übrig als dich ein bisschen durch google zu fressen um dir die syntax raus zu suchen. Ich weiss selbst nicht genau wie was wo geschieben wird. Ich kann mich erinnern, dass eine Ende der Anweisung einfach ein Enter ist. kein Symikolon! ich hasse das.. ich programmiere nicht ständig und springe auch oft. (neulich wieder mit php ne Navigationsmenu für ne Webpage aufgebaut). Gelernt habe ich programmieren mit C# in Java hab ich 2 Projekte bearbeitet. Privat mach ich vor allem PHP. und mit Perl nervt mich mein Bruder immer mit VB quäle ich mich nur wenn ich mit Excel oder Access normal nicht weiterkomme. Ich will damit nur sagen: Syntax merken ist überflüssig. Man sollte nur die logik und herangehensweise des Programmierens verstehen... dann gehen alle sprachen mit ein paar minuten Google von selbst! Gruß kre4k Zitieren
M4tRiX Geschrieben 11. März 2009 Autor Geschrieben 11. März 2009 wieso jetzt doch keine if-schleife? Ohja das mit dem semikolon kenn ich. Ich hab auch C gelernt. Aber jetzt will mein jetziger Teamleiter das ich in VBS scripte. Da hab ich so meine Probleme mit :hells: naja btt... wie soll ich es dann machen, wenn nicht per if-schleife? Mein Plan sieht so aus: - Dateien in 2 Arrays sotieren nach ab_dateien und xy_datieien... - in diesen 2 Arrays jeweils die neuste Datei suchen - datei in variable schreiben (ab_newest bzw. xy_newest) - datei verschieben... Set objFSO = CreateObject("Scripting.FileSystemObject") 'objFSO.MoveFile "C:\temp\quelle\" , s"C:\temp\ziele\" code zum Verschieben und umbennen (funktioniert wie gewünscht!) Bitte um Tipps wie ich das Verwirklicheh kann Zitieren
Klotzkopp Geschrieben 11. März 2009 Geschrieben 11. März 2009 Um die Meta-Diskussion abzukürzen: wieso jetzt doch keine if-schleife?Der Begriff "If-Schleife" ist Unsinn, weil die if-Anweisung eine Verzweigung einleitet, keine Schleife. Schleife bedeutet Wiederholung. Bei if wird nichts wiederholt. Das heißt nicht, dass du kein if benutzen sollst. Zitieren
Amstelchen Geschrieben 11. März 2009 Geschrieben 11. März 2009 es ist völlig egal, in welchen sprachen du bisher gearbeitet hast: verstehe das prinzip, wie eine iteration durch eine dateiliste (Folder) funktioniert. im übrigen hast du genau das in dem von mir angegeben link schon vorgegeben. du musst nurmehr die kopier-/verschiebefunktion genau dort einbauen. ich verstehe auch nicht wirklich, warum du mit irgendwelchen arrays herumtun willst, wenn du die datei nur verschieben/umbenennen (welches im übrigen so ziemlich dasselbe is) willst. s'Amstel Zitieren
M4tRiX Geschrieben 11. März 2009 Autor Geschrieben 11. März 2009 ich habe mir gedacht es wäre einfacher mit 2 Arrays zu arbeiten um die 2 typen der dateien zu unterscheiden... Wenn ihr aber ne bessere Idee hättet um 2 verschiedene Datei"typen" zu unterscheiden und jeweils die neuste Datei zu finden. Würd mich freuen^^ Weil zur Zeit steh ich wirklich auf dem Schlauch! Zitieren
Klotzkopp Geschrieben 11. März 2009 Geschrieben 11. März 2009 ich habe mir gedacht es wäre einfacher mit 2 Arrays zu arbeiten um die 2 typen der dateien zu unterscheiden... Du brauchst keine Arrays, wenn es dir nur darum geht, ein Minimum oder Maximum zu finden. Dazu musst du dir nur den kleinsten/größten bisher gefundenen Eintrag merken. Beispiel: Wenn du die längste Nummer in einem Telefonbuch wissen willst, schreibst du dann das komplette Telefonbuch ab, sortierst es nach Nummernlänge und schaust dir den letzten Eintrag an? Oder schaust du dir jede Nummer an, und wenn sie länger ist als die längste, die du bisher gefunden hast, vergisst du die alte und merkst dir die neue? Was ist einfacher? Zitieren
M4tRiX Geschrieben 11. März 2009 Autor Geschrieben 11. März 2009 ja okay das hört sich logisch an. aber wenn ich 2 telefonnummern haben will einmal die längste telefonnummer mit einem J am Anfang des Hausnamens und einmal mit einem A. Dann muss ich doch erst alle überprüfen und dann in 2 Tabellen schreiben. Einmal in eine Tabelle mit alles J Namen und die Länge (dann hat man die Längste Nummer (Ziel 1 wurde erreicht)) und in eine alle Nummer mit A im Namen (Ziel 2 erreicht) Wahrscheinlich verharre ich mich da einfach, aber so klingt es irgendwie logisch für mich. Dein Vorschlag würd nur funktionieren wenn ich nur eine Nummer haben möchte. Weil es kann ja auch sein, dass die längste Nummer (also ganz oben) gleich eine mit einem Namen J ist. Und die mit A? Zitieren
Klotzkopp Geschrieben 11. März 2009 Geschrieben 11. März 2009 Dein Vorschlag würd nur funktionieren wenn ich nur eine Nummer haben möchte. Weil es kann ja auch sein, dass die längste Nummer (also ganz oben) gleich eine mit einem Namen J ist. Und die mit A? Dann musst du dir einfach nur zwei bisher gefundene längste Nummern merken, eine für A und eine für J. Du schaust dir jede Nummer an. Fängt der Name mit A an, vergleichst du sie mit deiner längsten bisher gefundenen A-Nummer, und ersetzt sie gegebenenfalls. Fängt der Name mit J an, vergleichst du sie mit deiner längsten bisher gefundenen J-Nummer, und ersetzt diese gegebenenfalls. Fängt der Name weder mit A noch mit J an, gehst du zur nächsten Nummer. Das kannst du 1:1 auf dein Dateiproblem übertragen. Zitieren
M4tRiX Geschrieben 11. März 2009 Autor Geschrieben 11. März 2009 ja genauso will ich es machen.. aber ich weiß nicht wie ich das machen kann das ich die datei in einer variable speicher und und dann vergleiche? Codebeispiel?^^ Zitieren
Klotzkopp Geschrieben 11. März 2009 Geschrieben 11. März 2009 ja genauso will ich es machen.. aber ich weiß nicht wie ich das machen kann das ich die datei in einer variable speicher und und dann vergleiche?Du kannst nicht die Datei selbst speichern. Du musst die Eigenschaften der Datei speichern, die hier relevant sind: Den Namen (denn den brauchst du am Ende) und das Erstelldatum (das musst du vergleichen, um zu entscheiden, ob du beide ersetzen musst). Insgesamt also 4 Variablen. Zitieren
M4tRiX Geschrieben 11. März 2009 Autor Geschrieben 11. März 2009 (bearbeitet) Dim fso, f, strDateCreated,g, strDateCreated1 Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile("C:\temp\an.bat") strDateCreated = f.DateCreated MSGBOX strDateCreated Set fso = CreateObject("Scripting.FileSystemObject") Set g= fso.GetFile("C:\temp\e-mail.vbs") strDateCreated1= g.DateCreated MSGBOX strDateCreated1 if(strDateCreated>strDateCreated1) Then strDateCreated1=strDateCreated End if MSGBOX strDateCreated soo.. jetzt vergleich ich diese 2 Dateien. Muss sie halt am Anfang angeben, weil ich bisher noch nicht weiß wie ich im Sag das sie einen bestimmt Typ haben müssen. Bearbeitet 11. März 2009 von M4tRiX Zitieren
M4tRiX Geschrieben 11. März 2009 Autor Geschrieben 11. März 2009 So hab nun dieses Problem gelöst. Hab einfach per if-abfrage geklärt welche datei es ist... Nun hänge ich aber bei dem Auslesen einer XML-Datei. Ich muss in der XML-Datei einen bestimmt Tag auslesen und diesen in einer anderen Datei speichern. Kennt ihr euch damit aus? Bzw. könnt ihr mir Schlagwörter dafür nennen? Zitieren
M4tRiX Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 Morgen zusammen, könntet ihr mir bitte noch sagen was an folger Zeile falsch ist? objFSO.MoveFile objFile.Path & "\" objFile.Name, cDestination & "\" & strFile Fehler: Anweisungsende erwartet Code: 800A0401 Danke... Zitieren
Eratum Geschrieben 12. März 2009 Geschrieben 12. März 2009 Da fehlt noch nen & zwischen "\" und objFile.Name MfG Erratum Zitieren
M4tRiX Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 Danke Eratum!! Jetzt funktioniert das Aber jetzt ist der nächste Fehler aufgetaucht... Code: 800A000D Fehler: Typen unverträglich: 'lcas' if left(lcas(objFile.Name),12) = "aaaaaaaaaaa_" or left(lcas(objFile.Name),9) = "bbbbbbbb_" then Sry, aber ich weiß einfach nicht wo der Fehler ist. lcas soll doch eigentlich heißen das alles klein geschrieben wird. oder? Hab den Befehl aus dem Internet gefunden... Zitieren
Eratum Geschrieben 12. März 2009 Geschrieben 12. März 2009 (bearbeitet) edited: oha...stuss geschrieben :-) Neuer Versuch: Schau dir mal deinen lcase-Befehl genauer an... Erratum P.s.: Hab immer www.asphelper.de als Kurzreferenz genutzt. Da solltest dud as Grundlegendste auch zu VBS finden... Bearbeitet 12. März 2009 von Eratum Zitieren
M4tRiX Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 edited: Schau dir mal deinen lcase-Befehl genauer an... ...das hat mir schon gereicht. Hatte nur das "e" bei lcase vergessen^^:upps Danke dir.. Zitieren
M4tRiX Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 (bearbeitet) Soo jetzt bin ich beim nächsten problem gelandet.. kann man der Funktion CODE]xmlDoc.Load("")[ Das heißt das sieht dann so aus: xmlDoc.Load(""& objFile.Name) Dort kommt jedoch immer folgender Fehler: Code: 800A0046 Fehler: Erlaubnisverweigert wenn ich jedoch den pfad angebe: xmlDoc.Load("C:\temp\test.xml") funktioniert es einwandfrei. Es muss aber i-wie variabel sein. eine Variable mitgeben? Bearbeitet 12. März 2009 von M4tRiX Zitieren
Eratum Geschrieben 12. März 2009 Geschrieben 12. März 2009 was möchtest du mit dem "" & erreichen? Zitieren
M4tRiX Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 Dieser text wird ja gespeichert.. und mit ""& möcht ich erreichen, dass die Variable rein geschrieben wird... z.B. wie hier: objLogFile.WriteLine("File found: " & objFile.Name Irrsinn`? Zitieren
Klotzkopp Geschrieben 12. März 2009 Geschrieben 12. März 2009 Was steht denn in objFile.Name drin? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.