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

gelöst VBS: CLI Output umleiten bzw. auslesen

Mitglied: SaschaRD

SaschaRD (Level 1) - Jetzt verbinden

21.03.2014, aktualisiert 15:33 Uhr, 1889 Aufrufe, 6 Kommentare, 4 Danke

Hallo zusammen,

ich habe mal wieder eine Frage.

Der Inhalt aus dem Command Line Interface möchte ich gern in eine Datei umleiten oder gar direkt verarbeiten können.
01.
	SET Oracle = CreateObject("WScript.shell") 
02.
	Oracle.run "cmd",0 
03.
	Oracle.sendkeys "cd D:\Oracle\product\11.2.0\dbhome_1\OPatch {ENTER}" 
04.
	Oracle.sendkeys "D: {ENTER}" 
05.
	Oracle.sendkeys "opatch lsinventory {ENTER}" 
06.
	Oracle.sendkeys "exit {ENTER}"
Der Aufruf vom CLI und die Eingaben etc. funkionieren 1A.
Jedoch funktioniert die Umleitung nicht.
01.
	SET Oracle = CreateObject("WScript.shell") 
02.
	Oracle.run "cmd",0 
03.
	Oracle.sendkeys "cd D:\Oracle\product\11.2.0\dbhome_1\OPatch {ENTER}" 
04.
	Oracle.sendkeys "D: {ENTER}" 
05.
	Oracle.sendkeys "opatch lsinventory {ENTER} > output.txt"
Hier hämmert er mich einfach nur die "> output.txt" ins CLI-Fensterchen.
Eine Umleitung mit sendkeys scheint wohl nicht zu funktionieren (oder es muss ein speziellen Operator eingeben?).

Gruß, Sascha
Mitglied: colinardo
21.03.2014, aktualisiert um 13:31 Uhr
Hallo Sascha,
dafür gibt es eine elegantere Lösung um an StdOut eines Befehls zu kommen:
Beispiel zum Auslesen von StdOut und StdErr einer Befehlszeile
01.
Set objShell = CreateObject("Wscript.Shell") 
02.
Set fso = CreateObject("Scripting.Filesystemobject") 
03.
 
04.
'Befehl ausführen 
05.
Set oExec = objShell.Exec("cmd /c ping -n 1 localhost") 
06.
 
07.
'Warte darauf das der Befehl beendet wurde 
08.
Do While oExec.Status = 0 
09.
     WScript.Sleep 100 
10.
Loop 
11.
 
12.
' StdOut auslesen 
13.
out = "" 
14.
Do While Not oExec.StdOut.AtEndOfStream 
15.
   out = out & oExec.StdOut.ReadAll 
16.
Loop 
17.
 
18.
'StdErr auslesen 
19.
Do While Not oExec.StdErr.AtEndOfStream 
20.
   out = out & oExec.StdErr.ReadAll 
21.
Loop 
22.
 
23.
' Zum Test: Ausgabe anzeigen lassen: 
24.
WScript.Echo out 
25.
 
26.
' Ausgabe in Datei schreiben 
27.
fso.OpenTextFile("output.txt",2,True).Write(out)
Grüße Uwe
Bitte warten ..
Mitglied: SaschaRD
21.03.2014 um 14:22 Uhr
Hallo Uwe,

danke für deine Antwort.

Habe soeben deinen Code verwendet und für meine Zwecke umgebaut. Leider nimmt er den Output den LSInventory in die CLI postet nicht.
Wird LSInventory aufgerufen kommt folgenden Output
01.
D:\Oracle\product\11.2.0\dbhome_1\OPatch>opatch lsinventory 
02.
Invoking OPatch 11.1.0.6.6 
03.
 
04.
Oracle Interim Patch-Installationsprogramm Version 11.1.0.6.6 
05.
Copyright (c) 2009, Oracle Corporation. All rights reserved. Alle Rechte vorbehalten. 
06.
 
07.
 
08.
Oracle-Standardverzeichnis       : D:\Oracle\product\11.2.0\dbhome_1 
09.
Zentrales Bestandsverzeichnis: C:\Program Files\Oracle\Inventory 
10.
   von           : n/a 
11.
OPatch-Version    : 11.1.0.6.6 
12.
OUI-Version       : 11.2.0.1.0 
13.
OUI-Speicherort      : D:\Oracle\product\11.2.0\dbhome_1\oui 
14.
Speicherort von Log-Datei: D:\Oracle\product\11.2.0\dbhome_1\cfgtoollogs\opatch\opatch2014-03-21_14- 
15.
14-34PM.log 
16.
 
17.
Patch history file: D:\Oracle\product\11.2.0\dbhome_1\cfgtoollogs\opatch\opatch_history.txt 
18.
 
19.
Lsinventory Output file location : D:\Oracle\product\11.2.0\dbhome_1\cfgtoollogs\opatch\lsinv\lsinve 
20.
ntory2014-03-21_14-14-34PM.txt 
21.
 
22.
-------------------------------------------------------------------------------- 
23.
Installierte Produkte der obersten Ebene (1): 
24.
 
25.
Oracle Database 11g                                                  11.2.0.1.0 
26.
In diesem Oracle-Standardverzeichnis sind 1 Produkte installiert. 
27.
 
28.
 
29.
In diesem Oracle-Standardverzeichnis sind keine Interim-Patches installiert. 
30.
 
31.
 
32.
-------------------------------------------------------------------------------- 
33.
 
34.
OPatch succeeded.
Dieser Output ist für mich wichtig.

In der Datei steht zurzeit nur
01.
Microsoft Windows [Version 6.1.7601] 
02.
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten. 
03.
 
04.
c:\Skripte>
Mit "ReadAll" wird der gesamte Inhalt gelesen und mit "ReadLine" sind einzele Zeilen auslesbar? ggf. werde ich es später auf einzelne Zeilen beschränken (OPatch-Version) ist z.B. wichtig.

Gruß, Sascha
Bitte warten ..
Mitglied: colinardo
21.03.2014, aktualisiert um 15:10 Uhr
Obiges Script gibt nur das zurück was von diesem Befehl zurückgeben wird
Set oExec = objShell.Exec("cmd /c ping -n 1 localhost") 
Bitte warten ..
Mitglied: colinardo
LÖSUNG 21.03.2014, aktualisiert um 15:33 Uhr
Ach .. das müsste reichen... da hast du es umständlicher gemacht als es eigentlich ist ...
01.
Set objShell = CreateObject("Wscript.Shell") 
02.
Set fso = CreateObject("Scripting.Filesystemobject") 
03.
Set oExec = objShell.Exec("cmd /c ""D:\Oracle\product\11.2.0\dbhome_1\OPatch\opatch.exe"" lsinventory")  
04.
Do While oExec.Status = 0 
05.
     WScript.Sleep 100 
06.
Loop 
07.
out = "" 
08.
Do While Not oExec.StdOut.AtEndOfStream 
09.
   out = out & oExec.StdOut.ReadAll 
10.
Loop 
11.
Do While Not oExec.StdErr.AtEndOfStream 
12.
   out = out & oExec.StdErr.ReadAll 
13.
Loop 
14.
WScript.Echo out 
15.
fso.OpenTextFile("output.txt",2,True).Write(out)
Bitte warten ..
Mitglied: SaschaRD
21.03.2014 um 15:20 Uhr
Hallo Uwe,

wie immer erste Sahne. Vielen Dank.
01.
SET objShell = CreateObject("WScript.Shell") 
02.
SET objFSO = CreateObject("Scripting.Filesystemobject") 
03.
SET objExec = objShell.Exec("cmd /c ""D:\Oracle\product\11.2.0\dbhome_1\OPatch\opatch.bat"" lsinventory")  
04.
	DO WHILE objExec.Status = 0 
05.
		WScript.Sleep 10 
06.
	LOOP 
07.
		out = "" 
08.
		DO WHILE NOT objExec.StdOut.AtEndOfStream 
09.
		out = out & objExec.StdOut.ReadAll 
10.
		LOOP 
11.
			DO WHILE NOT objExec.StdErr.AtEndOfStream 
12.
			out = out & objExec.StdErr.ReadAll 
13.
			LOOP 
14.
			objFSO.OpenTextFile("output.txt",2,True).Write(out)
So läuft der Hase!

Hättest Du noch einen Vorschlag zum Auslesen von einzelen Zeilen? z.B. OPatch-Version.
Werde es mit ReadLine testen.

Nochmals Danke und Gruß, Sascha
Bitte warten ..
Mitglied: colinardo
LÖSUNG 21.03.2014, aktualisiert 25.03.2014
Zitat von SaschaRD:
Hättest Du noch einen Vorschlag zum Auslesen von einzelen Zeilen? z.B. OPatch-Version.
Werde es mit ReadLine testen.

Nochmals Danke und Gruß, Sascha
klar kein Problem, das lässt sich mit RegularExpressions einfach machen, werde dir gleich mal ein Beispiel schicken...

das hier unter den Code von Oben gesetzt extrahiert dir die OPatch-Version
01.
Set myRegExp = CreateObject("vbscript.regexp") 
02.
myRegExp.Pattern = "OPatch-Version\s*:\s*([\d\.]+)" 
03.
Set myMatches = myRegExp.Execute(out) 
04.
If myMatches.Count > 0 Then 
05.
	opatch_version = myMatches(0).SubMatches(0) 
06.
End If 
07.
wscript.echo opatch_version
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBS - Vor- und Nachnamen auslesen
Frage von Ah3n0bar6usVB for Applications2 Kommentare

Ich könnte noch einmal (teuren) Rat gebracuhen. Ich versuche mir dem u.a. Script den kompletten Namen eines Nutzers vom ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen
Frage von joni2000deBatch & Shell4 Kommentare

Hallo zusammen, ich lese mit folgendem Code das Eventlog aus um die Druckjobs zu ermitteln. Das funktioniert auf dem ...

Entwicklung

Zählerstände über SNMP und VBS auslesen

Frage von motofuzyEntwicklung4 Kommentare

Hallo ihr lieben, ich suche ein Script das in VBS oder Powershell geschrieben ist und mir die Zählerstände der ...

VB for Applications

CSV Datei mit VBS auslesen

Frage von scorpionesc83VB for Applications4 Kommentare

Hallo zusammen, ich bin in Sachen VBS ein totaler Anfänger und hoffe, dass ihr mir bei einem Problem helfen ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 11 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 20 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...