Probleme mit Log-Datei und Frage zum Überschreiben von Dateien
1.) Log-Einträge werden nicht immer geschrieben
2.) Wie kann man vorhandene Dateien überschreiben?
Hallo Leute!
Ich muss euch wieder mal bemühen. Dieses mal habe ich zwei Fragen:
1) Ich schreibe in eine Log-Datei, bevor mein Skript eine Datei kopiert/verschiebt und wenn nochmal nach dem Vorgang:
Und hier die Funktion zum Schreiben des Logs:
Am Anfag meines eigentlichen Codes definiere ich den Pfad zur Logdatei und ob gelogged werden soll. Das funktioniert auch einwandfrei.
Mein Problem: Ich teste mit zwei Dateien, die kopiert/verschoben werden. Beim Kopieren werden die Log-Einträge für beide Dateien gesetzt, beim Verschieben nur für eine Datei. Woran kann dies liegen??
Hier mal ein Beispiel für nen Logeintrag:
2.) Meine zweite Frage:
Wie kann ich eine bereits vorhandene (gleiche) Datei beim Kopieren/Verschieben überschreiben?
Ich dachte, dies ginge mit dem Parameter TRUE, bekommen dann aber einen Fehler.
2.) Wie kann man vorhandene Dateien überschreiben?
Hallo Leute!
Ich muss euch wieder mal bemühen. Dieses mal habe ich zwei Fragen:
1) Ich schreibe in eine Log-Datei, bevor mein Skript eine Datei kopiert/verschiebt und wenn nochmal nach dem Vorgang:
Function Copy(Quellpfad, Zielpfad)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Quelle = FSO.GetFolder(Quellpfad)
Set Ziel = FSO.GetFolder(Zielpfad)
For Each File in Quelle.Files
'Log-Eintrag schreiben:
Bericht = "Protokoll " & File.Name & " wird von " & Quellpfad & " nach " & Zielpfad & " kopiert!"
Call Log(Logdatei, Bericht)
FSO.CopyFile Quellpfad & "\*.*", Zielpfad & "\"
'Log-Eintrag schreiben:
Bericht = "Protokoll wurde von " & Quellpfad & " nach " & Zielpfad & " kopiert!"
Call Log(Logdatei, Bericht)
Next
End Function
Function Move(Quellpfad, Zielpfad)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Quelle = FSO.GetFolder(Quellpfad)
Set Ziel = FSO.GetFolder(Zielpfad)
For Each File in Quelle.Files
'Log-Eintrag schreiben:
Bericht = "Protokoll " & File.Name & " wird von " & Quellpfad & " nach " & Zielpfad & " verschoben!"
Call Log(Logdatei, Bericht)
FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\"
'Log-Eintrag schreiben:
Bericht = "Protokoll wurde von " & Quellpfad & " nach " & Zielpfad & " verschoben!"
Call Log(Logdatei, Bericht)
Next
End Function
Und hier die Funktion zum Schreiben des Logs:
Function Log(Datei, LogTxt)
If LogAktiv=1 Then
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileOut = FSO.OpenTextFile(Datei,8,True)
FileOut.WriteLine (now())
FileOut.WriteLine (LogTxt)
FileOut.writeLine (" ")
FileOut.Close
Set FileOut = Nothing
End If
End Function
Am Anfag meines eigentlichen Codes definiere ich den Pfad zur Logdatei und ob gelogged werden soll. Das funktioniert auch einwandfrei.
Mein Problem: Ich teste mit zwei Dateien, die kopiert/verschoben werden. Beim Kopieren werden die Log-Einträge für beide Dateien gesetzt, beim Verschieben nur für eine Datei. Woran kann dies liegen??
Hier mal ein Beispiel für nen Logeintrag:
15.02.2010 13:19:14
Protokoll PDFCreatorDoku.pdf wird von D:\PRINTTEST\TEMP2 nach D:\PRINTTEST\TEMP verschoben!
15.02.2010 13:19:17
Protokoll wurde von D:\PRINTTEST\TEMP2 nach D:\PRINTTEST\TEMP verschoben!
15.02.2010 13:19:37
Protokoll PDFCreatorDoku.pdf wird von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert!
15.02.2010 13:19:40
Protokoll wurde von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert!
15.02.2010 13:19:40
Protokoll Signatur_mit_Adobe8.pdf wird von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert!
15.02.2010 13:19:43
Protokoll wurde von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert!
15.02.2010 13:19:43
Protokoll PDFCreatorDoku.pdf wird von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP4\2010-02-15 verschoben!
15.02.2010 13:19:46
Protokoll wurde von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP4\2010-02-15 verschoben!
2.) Meine zweite Frage:
Wie kann ich eine bereits vorhandene (gleiche) Datei beim Kopieren/Verschieben überschreiben?
Ich dachte, dies ginge mit dem Parameter TRUE, bekommen dann aber einen Fehler.
FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\", TRUE
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135962
Url: https://administrator.de/contentid/135962
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
6 Kommentare
Neuester Kommentar
Moin IM Razor,
zu a) Für deine Log-Zeile ermittelst du den "richtigen" Text zwar dateiweise.
Die .MoveFile-Methode allerdings lässt du ja mit Wildcards (FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\" ) loslaufen.
D.h. it works as designed... - kein ungebührliches Verhalten des Schnipsels festzustellen.
zu b) Warum sollte MoveFile jetzt am Wochenende einen undokumentierten Parameter "ÜberschreibFallsVorhanden" dazubekommen haben?
Nur weil Valentinstag war?
--> Also, Vorhandensein "alteDatei" (im Zielverzeichnis) selber prüfen; ggf. vorher löschen.
Grüße
Biber
zu a) Für deine Log-Zeile ermittelst du den "richtigen" Text zwar dateiweise.
Die .MoveFile-Methode allerdings lässt du ja mit Wildcards (FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\" ) loslaufen.
D.h. it works as designed... - kein ungebührliches Verhalten des Schnipsels festzustellen.
zu b) Warum sollte MoveFile jetzt am Wochenende einen undokumentierten Parameter "ÜberschreibFallsVorhanden" dazubekommen haben?
Nur weil Valentinstag war?
--> Also, Vorhandensein "alteDatei" (im Zielverzeichnis) selber prüfen; ggf. vorher löschen.
Grüße
Biber
Hallo lmrazor!
Anstelle von
würde sich
besser eignen (gilt analog auch für das Kopieren und die Methode "
Grüße
bastla
Und wieso funktioniert es dann bei der CopyFile-Methode??
Nach dem (ersten) Kopieren aller Dateien befinden sich wie viele Dateien im Quellpfad? Jedenfalls mehr als nach dem (ersten und einzigen) Verschieben aller Dateien ... Anstelle von
FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\"
File.Move Zielpfad & "\"
Copy
") ...Grüße
bastla
Hallo lmrazor!
Ließe sich noch etwas "eindampfen" :
Grüße
bastla
Ließe sich noch etwas "eindampfen" :
Function Move(Quellpfad, Zielpfad)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Quelle = FSO.GetFolder(Quellpfad)
Set Ziel = FSO.GetFolder(Zielpfad)
For Each File in Quelle.Files
If FSO.fileExists(Zielpfad & "\" & File.Name) Then FSO.DeleteFile Zielpfad & "\" & File.Name
File.Move Zielpfad & "\"
Next
End Function
bastla