(VBS) Datei mit bestimmter Endung löschen
servus erstmal!
ich brauch ein script, das folgende voraussetzungen erfüllen muss:
- alle .ost Datein löschen
- keine anderen Datein löschen
- das verzeichnis muss aus ner Txt-Datei oder wenigstens aus nem array gelesen werden
mein code bis etz:
folgendes is noch zu sagen:
-zum Verständnis: er löscht mir alle! Datein aus dem Ordner "test"
-er geht immer nur nach dem string (hier: xxxxxxxxxxxxxxxx); er soll aber *.ost Datein löschen!!
sprich wenn ich "*.ost" oder *.ost mach, geht nix
-hab mir des so vorgestellt in Richtung substring
-das er mir die verzeichnisse aus ner txt Datei ausließt mach ich selber noch mal, nur wenn mal wer auf Anhieb nen code hat ;)
danke schonmal fürs lesen^^
servus
ich brauch ein script, das folgende voraussetzungen erfüllen muss:
- alle .ost Datein löschen
- keine anderen Datein löschen
- das verzeichnis muss aus ner Txt-Datei oder wenigstens aus nem array gelesen werden
mein code bis etz:
Verzeichnis = "C:\Dokumente und Einstellungen\xxx\Desktop\ost löschen\test"
Aufheben = 0 ' Anzahl der Tage
Set fso = CreateObject("Scripting.FileSystemObject")
Set ordner = fso.GetFolder(Verzeichnis)
Set dateien = ordner.files
heute = Date()
For Each datei In dateien
If datei.DateLastModified > (heute - Aufheben) Then
If datei.name = "xxxxxxxxxxxxxxx" Then
msgbox("gesuchte datei existiert")
else
msgbox("keine datei gefunden")
end if
'--------------------------------------------------------------------------------------
'die ganze if-abfrage mach ich nur, damit ich seh, ob er nur nen string annimmt oder auch *.ost
'--------------------------------------------------------------------------------------
datei.Delete 'hier wird einfach jede Datei gelöscht!
End If
Next
'----------------------------
'eingentlich ist der pfeil genau anders rum, und zwar so: <
'hab ich nur gemacht, das die bedingung immer erfüllt ist
'------------------------------------------------------------------------------------------
'Error-Log:
zeit = Time()
Set oFile = fso.OpenTextFile("C:\Dokumente und Einstellungen\xxx\Desktop\ost löschen\log.txt",8,true)
If err.Number <> 0 Then
oFile.WriteLine "Fehler2: " & err.Number & " " & err.Description
err.Clear
Else
oFile.WriteLine "Kein Fehler aufgetreten. " & heute & " " & zeit
End If
oFile.close
' -------------------------------------------------------------------------------------------
msgbox ("fertig")
folgendes is noch zu sagen:
-zum Verständnis: er löscht mir alle! Datein aus dem Ordner "test"
-er geht immer nur nach dem string (hier: xxxxxxxxxxxxxxxx); er soll aber *.ost Datein löschen!!
sprich wenn ich "*.ost" oder *.ost mach, geht nix
-hab mir des so vorgestellt in Richtung substring
-das er mir die verzeichnisse aus ner txt Datei ausließt mach ich selber noch mal, nur wenn mal wer auf Anhieb nen code hat ;)
danke schonmal fürs lesen^^
servus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79322
Url: https://administrator.de/contentid/79322
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
13 Kommentare
Neuester Kommentar
@rubberduck
Das würde aber auch mein Lieblingslied Schnee.zu.Ostern.mp3 von Cochise löschen.
Da wär ich aber böse, das kann ich dir sagen
Gruß,
gemini
IF INSTR(1,datei.name,".ost") <> 0 THEN....
Da wär ich aber böse, das kann ich dir sagen
Gruß,
gemini
Hallo seppxx!
Wenn Du, so wie in diesem Fall, nach einer bekannten Extension suchst, passt natürlich gemini's Lösung.
Damit Dir keine Datei entwischt, könntest Du ev noch ein LCase() verwenden:
Grüße
bastla
Such mal im Google nach script56.chm. Z.Bsp. bei dieseyer.de kannst Du es runterladen.
... und darin findest Du dann zB auch die Methode "GetExtensionName" des "FileSystemObject"s (für Fälle, in denen Du nicht sicher sein kannst, dass die Extension inkl "." genau 4 Zeichen lang ist).Wenn Du, so wie in diesem Fall, nach einer bekannten Extension suchst, passt natürlich gemini's Lösung.
Damit Dir keine Datei entwischt, könntest Du ev noch ein LCase() verwenden:
If LCase(Right(datei.name, 4)) = ".ost" Then
Grüße
bastla
@gemini
Ja, Ja. Mach Dich nur Lustig...
Ist mir zwar auch durch den Kopf, aber ich muss halt nebenbei auch arbeiten
Darum auch der Tipp mit script56.chm. Dort findet er alles was er braucht (und noch vieles mehr...)
Ja, Ja. Mach Dich nur Lustig...
Ist mir zwar auch durch den Kopf, aber ich muss halt nebenbei auch arbeiten
Darum auch der Tipp mit script56.chm. Dort findet er alles was er braucht (und noch vieles mehr...)
Hallo seppxx!
Wenn ich's eilig habe (also meistens ), dann:
Ergebnis in beiden Fällen: aText() enthält zeilenweise den Inhalt Deines Textfiles. Auslesen zB so:
Der letzte Teil macht mehr Spaß, wenn das Script über "cscript" gestartet wird ...
Grüße
bastla
hat wer vll ein gut verständliches snippet zum txt-Datei-->array einlesen?
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile("D:\DeineDatei.txt", 1)
sGesamtText = oFile.ReadAll
aText = Split(sGesamtText, vbCrLF)
oFile.Close
aText = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile("D:\DeineDatei.txt", 1).ReadAll, vbCrLF)
For i = 0 To UBound(aText)
WScript.Echo "Zeile " & Right(String(4, " ") & CStr(i), 4) & ": " & aText(i)
Next
was hat es mit dem fso auf sich?
Ich schließe mich der Empfehlung an, Dir die "script56.chm" (dieseyer.de wurde schon erwähnt) zu besorgen und Dich einmal darin umzusehen ...Grüße
bastla
Dim retstring
Dim sqlstring As String
Dim arrayretstring
Set comm = New ADODB.Command
Set comm.ActiveConnection = condb
'***************************************************************************
'datei ist eine Übergabevariable die ich der Funktion mitgegeben habe. Diese enthält den Pfad 'und den Namen der Datei. Als Beispiel: C:\Programme\Dateiloeschen\programm.ini
'Sprich die Zeile öffnet eine Datei zum einlesen auf dem Datenkanal 1
'***************************************************************************
Open datei For Input As #1
'***************************************************************************
'Whileschleife bis das ende des Textfiles erreiche ist oder der beginn des Textfiles
'***************************************************************************
While Not EOF(1)
'***************************************************************************
'Einfügen der ersten Zeile des Textfiles
'Hier hast du auch dein array. Zur Erklärung vielleicht da ich nicht weiß ob du das weißt.
'***************************************************************************
Line Input #1, retstring
'***************************************************************************
'Zerlegen des Strings nach ; als Delemiter
' Eine Variable vom Typ Variant kann direkt als Array genutzt werden ohne dieses ( Array )
'im Vorfeld extra zu deklarieren
'***************************************************************************
arrayretstring = Split(retstring, ";")
'***************************************************************************
'Einfügen des Datensatzes mit dem Comm Objekt
'Dies ist aus meinem Quellcode um dir zu Zeigen wie du die einzelnen Felder des Arrays
' ansprichst
'Das comm Object ist ein Objekt welches ich mit Dim comm as new ADODB.COMMAND am beginn definiert habe. Brauchst du für dein Projekt nicht
'***************************************************************************
sqlstring = "INSERT INTO T_USERSTATUS (username,computername,sessionnumber,ipnummer,datum,uhrzeit,status) VALUES ('" & arrayretstring(0) & "','" & arrayretstring(1) & "','" & arrayretstring(2) & "','" & Replace(arrayretstring(3), """", "") & "','" & arrayretstring(4) & "','" & arrayretstring(5) & "','" & arrayretstring(6) & "')"
With comm
.CommandText = sqlstring
.CommandType = adCmdText
.Execute
End With
Wend
'***************************************************************************
'Schließen des Datenkanals und leeren des Objektes
'***************************************************************************
Set comm = Nothing
Close #1
Natürlich funktionieren die anderen Lösungen auch. Es ging mir nur darum dir zu zeigen das es nicht immer da File System Object sein muss. VB6 bietet einige Möglichkeiten direkte Kanäle zu öffnen und dann mit den Daten zu arbeiten. Wenn man eine einfache sequentielle Datenverarbeitung machen will reicht die Kanalmethode vollkommen. Das FSO bietet einfach mehr Möglichkeiten für erweiterte Bearbeitungen.
Das zu der Frage warum FSO oder wieso FSO ;o)
Gruß
Sven
edit----------------------------------------
Um der Frage voregzugreifen warum FSO oder einfach Datenkanal.
Das FSO bietet sich an um gewisse BEARBEITUNGEN zu machen. Wenn man aber einfach Sequentiell arbeiten will reicht der Datenkanal. Ausserdem ist dieser in der Speicherverwaltung auch nicht so groß man bruacht keine Objekte ncihts, sondern kann diesen direkt ansprechen.