Top-Themen

Aktuelle Themen (A bis Z)

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

for /f "tokens=6,7 delims= " in VBS

Mitglied: Andynix

Andynix (Level 1) - Jetzt verbinden

28.12.2006, aktualisiert 31.12.2006, 9177 Aufrufe, 4 Kommentare

Hallo,
Wie kann ich eine Log-Datei auslesen und überprüfen wie in diesen Batchschnipsel mit WSH ?
01.
...
02.
:AUSWERTUNG
03.
for /f "tokens=6,7 delims= " %%i in ('type F:\log.txt^|find "Dirs"') do set /a "cntMismatch+=%%i, cntFailed+=%%j"
04.
if not %cntMismatch%==0 goto FEHLER
05.
if not %cntFailed%==0 goto FEHLER
06.
...
Mitglied: bastla
28.12.2006 um 17:42 Uhr
Hallo Andynix!

Vorweg: Obwohl ich persönlich recht gerne VBScript verwende, würde ich gerade für diese Aufgabenstellung nicht unbedingt dazu raten.

Ausgehend von der Annahme, dass es sich bei "log.txt" um die Ausgabe von "Robocopy" handelt, könnte das so aussehen:
01.
'CheckRobocopyLog.vbs
02.
Const sLogFile = "F:\log.txt"
03.
Const sMarker = "     Dirs :" 'Kennzeichen am Zeilenanfang
04.
Const sOK = "Sicherung erfolgreich."
05.
sMarkLen = Len(sMarker)
06.
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
07.
Set oLogFile = fso.OpenTextFile(sLogFile, 1)
08.
Do While Not oLogFile.AtEndOfStream
09.
	sLine = oLogFile.ReadLine
10.
	If Left(sLine, sMarkLen) = sMarker Then
11.
		sValues = Trim(Mid(sLine, sMarkLen + 1)) 'hinter Kennzeichen befinden sich die Werte
12.
		Exit Do 'weitere Zeilen nicht mehr untersuchen
13.
	End If
14.
Loop
15.
oLogFile.Close
16.

17.
'Auswertung
18.
If sValues <> "" Then
19.
	sMsg = sOK
20.
	iPos = Instr(sValues, " ")
21.
	If iPos > 1 Then
22.
		iTotal = CInt(Left(sValues, iPos - 1))
23.
	End If
24.
	sValues = Trim(Mid(sValues, iPos))
25.
	iPos = Instr(sValues, " ")
26.
	If iPos > 1 Then
27.
		iCopied = CInt(Left(sValues, iPos - 1))
28.
	End If
29.
	sValues = Trim(Mid(sValues, iPos))
30.
	iPos = Instr(sValues, " ")
31.
	If iPos > 1 Then
32.
		iSkipped = CInt(Left(sValues, iPos - 1))
33.
	End If
34.
	sValues = Trim(Mid(sValues, iPos))
35.
	iPos = Instr(sValues, " ")
36.
	If iPos > 1 Then
37.
		iMismatch = CInt(Left(sValues, iPos - 1))
38.
	End If
39.
	sValues = Trim(Mid(sValues, iPos))
40.
	iPos = Instr(sValues, " ")
41.
	If iPos > 1 Then
42.
		iFailed = CInt(Left(sValues, iPos - 1))
43.
	End If
44.
	sValues = Trim(Mid(sValues, iPos))
45.
	iExtras = CInt(sValues)
46.

47.
	'Aufbereitung Ergebnis
48.
	If iMismatch <> 0 Then
49.
		sMsg = "Mismatches:"  & vbTab & iMismatch
50.
	End If
51.
	If iFailed <> 0 Then
52.
		If sMsg <> sOK Then
53.
			sMsg = sMsg & vbCrLF & "FAILED: " & vbTab & vbTab & iFailed
54.
		Else
55.
			sMsg = "FAILED: " & vbTab & iFailed
56.
		End If
57.
	End If
58.
Else
59.
	sMsg = "Dirs-Daten nicht gefunden!"
60.
End If
61.

62.
WScript.Echo sMsg
63.
If sMsg <> sOK Then WScript.Quit(1) 'Errorlevel setzen
Anmerkung: Es wird nicht überprüft, ob die Log-Datei überhaupt existiert, der Auswertungsteil ließe sich natürlich eleganter schreiben und was die Aufbereitung / Ausgabe / Weiterverwendung des Ergebnisses anlangt, musst Du ohnehin Deine Vorstellungen umsetzen - solltest Du das wirklich per VBS lösen wollen ...

Grüße
bastla
Bitte warten ..
Mitglied: Andynix
29.12.2006 um 01:33 Uhr
Erstens:
Danke es fuktioniert ! Ist halt nur heftig im Vergleich zur 3 Batchzeilen !

Zweitens:
Wieso kann ich nicht einfach den sMarker ändern um Files auszulesen z.B. so Const sMarker = " Files :"
(...ja mit einen Leerschritt weniger als bei Dirs:)
Bitte warten ..
Mitglied: bastla
29.12.2006 um 09:01 Uhr
Hallo Andynix!

Zu Erstens: "Heftig" ist eigentlich noch untertrieben ...

Zu Zweitens: "Files :" eignet sich nicht als Kennzeichen, da es mehr als einmal im Log am Anfang einer Zeile steht - Du müsstest also den String eindeutig machen (zB " Files : ", also noch mindestens 2 Leerzeichen nach dem ":").

Grüße
bastla
Bitte warten ..
Mitglied: Andynix
31.12.2006 um 15:21 Uhr
Vielen Dank, es funktioniert mit "Files: " und 2 Leerschritten wunderbar.
Ich habe es gleich für meine private Backup-Batch-Datei verwendet.
("Eigene Dateien" auf eine externe HDD sichern)

01.
dim objNet,wshell,fso
02.

03.
set objNet = CreateObject("WScript.NetWork")
04.
set wshell = CreateObject("Wscript.shell")
05.
set fso = CreateObject("Scripting.FileSystemObject")
06.

07.
frage=msgbox("Backup vom USB-Stick auf der Festplatte erstellen ?",vbyesno + vbQuestion ,"Frage")'
08.
if frage=vbNo then WScript.quit'
09.

10.
if not objNet.ComputerName = "PC-ANDREAS" Then
11.
MsgBox "Falscher Computer, kein Backup",vbExclamation
12.
elseif not fso.FolderExists("F:\PC-ANDREAS\_new") then
13.
MsgBox "F:\PC-ANDREAS\ nicht da, also kein Backup",vbExclamation
14.
wscript.quit
15.
else call pc_andreas
16.
end if
17.

18.
sub pc_andreas
19.
Set f1 = fso.Getfolder("F:\PC-ANDREAS\_new")
20.
f1.move ("F:\PC-ANDREAS\_old1")
21.
Set f2 = fso.Getfolder("F:\PC-ANDREAS\_old")
22.
f2.move ("F:\PC-ANDREAS\_new")
23.
Set f3 = fso.Getfolder("F:\PC-ANDREAS\_old1")
24.
f3.move ("F:\PC-ANDREAS\_old")
25.

26.
wshell.popup "USB Backup wird gerade erstellt...",9,"Meldung verschwindet automatisch"
27.

28.
wshell.run "robocopy.exe ""E:\Eigene Dateien"" ""F:\PC-ANDREAS\_new\Eigene Dateien"" /MIR /NFL /NDL /R:3 /LOG:F:\PC-ANDREAS\_new.txt",0,true
29.
wshell.run "robocopy.exe ""E:\Eigene Bilder"" ""F:\PC-ANDREAS\_new\Eigene Bilder"" /MIR /NFL /NDL /R:3 /LOG+:F:\PC-ANDREAS\_new.txt",0,true
30.

31.
wshell.popup "Der wichtiger Teil ist fertig...",9,"Meldung verschwindet automatisch"
32.

33.
wshell.run "robocopy.exe ""D:\Eigene Music"" ""F:\PC-ANDREAS\_to_big\Eigene Music"" /MIR /NFL /NDL /R:3 /LOG+:F:\PC-ANDREAS\_new.txt",0,true
34.
wshell.run "robocopy.exe ""D:\Eigene Videos"" ""F:\PC-ANDREAS\_to_big\Eigene Videos"" /MIR /NFL /NDL /R:3 /LOG+:F:\PC-ANDREAS\_new.txt",0,true
35.
wshell.run "robocopy.exe ""D:\_Driver_"" ""F:\PC-ANDREAS\_to_big\_Driver_"" /MIR /NFL /NDL /R:3 /LOG+:F:\PC-ANDREAS\_new.txt",0,true
36.
wshell.run "robocopy.exe ""D:\PQDI"" ""F:\PC-ANDREAS\_to_big\PQDI"" /MIR /NFL /NDL /R:3 /LOG+:F:\PC-ANDREAS\_new.txt",0,true
37.

38.
call CheckRobocopyLog
39.
end sub
40.
wscript.quit
Wobei call CheckRobocopyLog das Schnipsel von oben von bastla aufruft das sich unter wscript.quit befindet.
(wegen der Länge habe ich hier gespart)

Ich glaube nicht das es besonders schön ist (ist der call Aufruf überhaupt ok?) aber es funktioniert für mich persönlich sehr gut.

Zu Erklärung
- es befindet sich auf der USB HDD (F
-- ein Ordner namens PC-ANDREAS
--- mit 2 Unterordnern _new und _old
Wegen der großen Datenmenge werden vor dem Backup die Ordner umbenannt und erst dann neu synchronisiert.
(so dass immer das "letzte" und "vorletzte" Backup zur Verfügung steht, kann man das verstehen ?)
es gibt auch einen _to_big der einfach mit der Festplatte synchronisiert wird

PS.: es kommt noch eine Datumsabfrage, welche davor warnt wenn das Backup erst heute erstellt wurde.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Stringanipulation innerhalb einer FOR F Schleife

gelöst Frage von AcJokerBatch & Shell2 Kommentare

Hallo, ich würde gerne innerhalb einer FOR / F Schleife eine Variable (z.B. GKxxxxxxxxxx) "beschneiden", so das ich nur ...

Batch & Shell

Meldungen in FOR f Schleife nach NUL umleiten

gelöst Frage von anmelderBatch & Shell4 Kommentare

Hallo, dieser Code gibt mir aus ob ein Flashspeicher vorliegt und gelöscht oder formatiert werden soll: Wenn kein Flashspeicher ...

Batch & Shell

Batch for f Befehl erkennt doppelte Zeichen als eines

gelöst Frage von 126594Batch & Shell3 Kommentare

Hallo zusammen. Ich versuche mich zur Zeit am Bearbeiten von Variablen in Batchdateien. Eigentlich bin ich schon ganz gut ...

Basic

VBS: Erlaubnis verweigert in For-Next-Schleife

gelöst Frage von GurkenhobelBasic6 Kommentare

Hallo Gemeinde, wieder stehe ich vor einem Problemchen. Als VBS-Neuling habe ich ein vorhandenes Script modifiziert. Dieses soll alle ...

Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 2 StundenWindows Mobile

Moin, MS empfiehlt als Alternative den Umstieg auf IOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 2 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell26 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Windows 10
Robocopy Quelle und Ziel vertauscht Daten gelöscht ?
Frage von eastclintwoodWindows 1021 Kommentare

Hallo, ich wollte Daten von einer extrernen Festplatte (USB) auf eine interne Platte per robocopy sichern. Leider habe ich ...

Microsoft
Übertragung von MS Volumenlizenzen
Frage von SherlockineMicrosoft20 Kommentare

Ich bin Angestellte in einer kleinen 10-köpfigen IT-Firma, die Netzwerklösungen, Telefonielösungen und Ähnliches anbietet. Im Sommer hatten wir einen ...