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

Frage Entwicklung VB for Applications

Mitglied: Andynix

Andynix (Level 1) - Jetzt verbinden

28.12.2006, aktualisiert 31.12.2006, 8969 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
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 ...

Sicherheits-Tools
F-Prot for Windows Corporate mit Samba Share
gelöst Frage von sams15Sicherheits-Tools3 Kommentare

Hallo, suche eine gute Anleitung zu diesem Thema. Mein Vorhaben: Auf 3 MS-Windows (XP) Rechner, F-Prot For Windows Corporate ...

Batch & Shell
For f Skip Schleife soll txt files kopieren
gelöst Frage von BiffBaffBatch & Shell2 Kommentare

Hallo zusammen, ich habe schon in anderen Foren gelesen, dass die FOR /F Variante keine Wildcards enthaelt. Ich wuerde ...

Batch & Shell
Ausgabe der einzelnen Ergebnisse einer For-Schleife mit Schalter F
gelöst Frage von hipfzwirgelBatch & Shell11 Kommentare

Hallo Leute, besteht die Möglichkeit die Ergebnisse einer For-Schleife(Batch/CMD) in eine für jeden Durchgang erzeugte Variable zu speichern. Beispiel: ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 11 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 15 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...