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.
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 135962
Url: https://administrator.de/contentid/135962
Printed on: April 19, 2024 at 22:04 o'clock
6 Comments
Latest comment
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