Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Probleme mit Log-Datei und Frage zum Überschreiben von Dateien

Frage Entwicklung Batch & Shell

Mitglied: Imrazor

Imrazor (Level 1) - Jetzt verbinden

15.02.2010 um 13:28 Uhr, 5074 Aufrufe, 6 Kommentare

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:

01.
Function Copy(Quellpfad, Zielpfad) 
02.
 
03.
Set FSO = CreateObject("Scripting.FileSystemObject") 
04.
Set Quelle = FSO.GetFolder(Quellpfad) 
05.
Set Ziel = FSO.GetFolder(Zielpfad) 
06.
 
07.
For Each File in Quelle.Files 
08.
 
09.
	'Log-Eintrag schreiben: 
10.
	Bericht = "Protokoll " & File.Name & " wird von " & Quellpfad & " nach " & Zielpfad & " kopiert!" 
11.
	Call Log(Logdatei, Bericht) 
12.
 
13.
	FSO.CopyFile Quellpfad & "\*.*", Zielpfad & "\" 
14.
 
15.
	'Log-Eintrag schreiben: 
16.
	Bericht = "Protokoll wurde von " & Quellpfad & " nach " & Zielpfad & " kopiert!" 
17.
	Call Log(Logdatei, Bericht) 
18.
Next 
19.
	 
20.
End Function
01.
Function Move(Quellpfad, Zielpfad) 
02.
 
03.
Set FSO = CreateObject("Scripting.FileSystemObject") 
04.
Set Quelle = FSO.GetFolder(Quellpfad) 
05.
Set Ziel = FSO.GetFolder(Zielpfad) 
06.
 
07.
For Each File in Quelle.Files 
08.
 
09.
	'Log-Eintrag schreiben: 
10.
	Bericht = "Protokoll " & File.Name & " wird von " & Quellpfad & " nach " & Zielpfad & " verschoben!" 
11.
	Call Log(Logdatei, Bericht) 
12.
 
13.
	FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\" 
14.
 
15.
	'Log-Eintrag schreiben: 
16.
	Bericht = "Protokoll wurde von " & Quellpfad & " nach " & Zielpfad & " verschoben!" 
17.
	Call Log(Logdatei, Bericht) 
18.
Next 
19.
 
20.
End Function
Und hier die Funktion zum Schreiben des Logs:

01.
Function Log(Datei, LogTxt) 
02.
 
03.
If LogAktiv=1 Then 
04.
	Set FSO = CreateObject("Scripting.FileSystemObject") 
05.
	Set FileOut = FSO.OpenTextFile(Datei,8,True) 
06.
 
07.
	FileOut.WriteLine (now()) 
08.
	FileOut.WriteLine (LogTxt) 
09.
	FileOut.writeLine ("   ") 
10.
	FileOut.Close 
11.
 
12.
	Set FileOut = Nothing 
13.
End If 
14.
 
15.
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:
01.
15.02.2010 13:19:14 
02.
Protokoll PDFCreatorDoku.pdf wird von D:\PRINTTEST\TEMP2 nach D:\PRINTTEST\TEMP verschoben! 
03.
    
04.
15.02.2010 13:19:17 
05.
Protokoll wurde von D:\PRINTTEST\TEMP2 nach D:\PRINTTEST\TEMP verschoben! 
06.
   
07.
15.02.2010 13:19:37 
08.
Protokoll PDFCreatorDoku.pdf wird von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert! 
09.
    
10.
15.02.2010 13:19:40 
11.
Protokoll wurde von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert! 
12.
    
13.
15.02.2010 13:19:40 
14.
Protokoll Signatur_mit_Adobe8.pdf wird von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert! 
15.
    
16.
15.02.2010 13:19:43 
17.
Protokoll wurde von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP5\2010-02-15 kopiert! 
18.
    
19.
15.02.2010 13:19:43 
20.
Protokoll PDFCreatorDoku.pdf wird von D:\PRINTTEST\TEMP nach D:\PRINTTEST\TEMP4\2010-02-15 verschoben! 
21.
    
22.
15.02.2010 13:19:46 
23.
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.

01.
FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\", TRUE
Mitglied: Biber
15.02.2010 um 13:53 Uhr
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
Bitte warten ..
Mitglied: Imrazor
15.02.2010 um 14:06 Uhr
Hey Biber,

zu 1) dumme Frage: Und wieso funktioniert es dann bei der CopyFile-Methode??

Hier mache ich es ja genauso mit Wildcards:
01.
FSO.CopyFile Quellpfad & "\*.*", Zielpfad & "\" 
zu 2) hmm, dachte es gibt für MobeFile ebenfalls diesen Parameter geben, wie bei CopyFile. Anscheinend ist dem nicht so.
Bitte warten ..
Mitglied: bastla
15.02.2010 um 14:33 Uhr
Hallo lmrazor!
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 & "\"
würde sich
File.Move Zielpfad & "\"
besser eignen (gilt analog auch für das Kopieren und die Methode "Copy") ...

Grüße
bastla
Bitte warten ..
Mitglied: Imrazor
15.02.2010 um 15:22 Uhr
Super, danke bastla!

Da stand ich wohl ein bißchen auf der Leitung

Naja, jetzt muss ich nur noch was zusammenbasteln für die Prüfung, ob die Dateien schon vorhanden sind...
Bitte warten ..
Mitglied: Imrazor
15.02.2010 um 16:14 Uhr
Für alle, die es interessiert, ich habe die Prüfung so gelöst:

01.
Function Move(Quellpfad, Zielpfad) 
02.
 
03.
Set FSO = CreateObject("Scripting.FileSystemObject") 
04.
Set Quelle = FSO.GetFolder(Quellpfad) 
05.
Set Ziel = FSO.GetFolder(Zielpfad) 
06.
 
07.
For Each File in Quelle.Files 
08.
 
09.
	If FSO.fileExists(Zielpfad & "\" & File.Name) then 
10.
	 
11.
	FSO.DeleteFile Zielpfad & "\" & File.Name 
12.
 
13.
	File.Move Zielpfad & "\" 
14.
 
15.
	Else 
16.
 
17.
	File.Move Zielpfad & "\" 
18.
 
19.
	End If 
20.
Next 
21.
End Function
Bitte warten ..
Mitglied: bastla
15.02.2010 um 17:31 Uhr
Hallo lmrazor!

Ließe sich noch etwas "eindampfen" :
01.
Function Move(Quellpfad, Zielpfad) 
02.
 
03.
Set FSO = CreateObject("Scripting.FileSystemObject") 
04.
Set Quelle = FSO.GetFolder(Quellpfad) 
05.
Set Ziel = FSO.GetFolder(Zielpfad) 
06.
 
07.
For Each File in Quelle.Files 
08.
 
09.
	If FSO.fileExists(Zielpfad & "\" & File.Name) Then FSO.DeleteFile Zielpfad & "\" & File.Name 
10.
 
11.
	File.Move Zielpfad & "\" 
12.
 
13.
Next 
14.
End Function
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Netzwerkmanagement
gelöst Sophos UTM220 - Appliance CPU Auslastung LOG-Datei downloaden? (7)

Frage von 1410640014 zum Thema Netzwerkmanagement ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Batch & Shell
gelöst Kl. Frage: Log-File schreiben per Batch (3)

Frage von Yauhun zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...