nitrogenius
Goto Top

Vbscript Aufruf über cmd, farbige Fehlermeldungen möglich? Wie?

Hallo zusammen,
nach kanpp 2 Stunden googlen habe ich mich nun mit letzter Hoffnung hier angemeldet.

Ich habe ein umfangreiches Copy-Script, das viele Statusmeldungen, Dateinamen etc. mit wscript.echo ausgibt (Ausgabe mit cscript über cmd).

Das klappt alles wunderbar, allerdings brauche ich farbige Schriftzüge (z.B. Dateinnamen grün, Fehlermeldungen rot usw.), da sonst die Übersicht sehr leidet.

Vereinfachtes Prinzip:
'''''''''''''''''''''''''''
If variable = 2 then
"schriftart auf grün stellen"
wscript.echo "Alles ok"
elseif variable = 3
"schriftfarbe auf rot stellen"
wscript.echo "Fehler"
End if

schriftfarbe zurücksetzen
[...viele Weitere Anweisungen]
'''''''''''''''''''''''''''

In der cmd selber bekomme ich die Schriftfarbe mit z.B. "color 0a" auf grün gestellt.
Diesen Befehl würde ich gerne in mein Script einbauen, schaffe es aber nicht.
Auch z.B.

Set WshShell = WScript.CreateObject("WScript.Shell")
wshshell.sendkeys "color 0a"

hilft nicht.

Kann mir jemand weiter helfen? Komme weder mit Google, der Windows-Scripting-Hilfe oder mit meinen Scripting Buch weiter.

Vielen Dank im Voraus,
Liebe Grüße,
Manuel

Content-Key: 115054

Url: https://administrator.de/contentid/115054

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: 76109
76109 30.04.2009 um 14:16:52 Uhr
Goto Top
Hallo Nitrogenius,

damit hat es funktioniert:

Set WshShell = WScript.CreateObject("WScript.Shell")   
wshshell.sendkeys "color a {ENTER}"  'ohne 0 nur 0-F  

Gruß Dieter
Mitglied: 77559
77559 30.04.2009 um 14:30:45 Uhr
Goto Top
allo Nirtogenius,

J- und vbscript haben leider keine Befehle um die Farbe zu ändern.
Mit API Zugriffen ginge das, aber das kann vbscript nicht.

Leider wird sich da auch nichts mehr tun, es findet keine Weiterentwicklung des WSH statt.
In Powershell ist das inzwischen kein Problem aber wahrscheinlich für dich keine Lösung.

Eine Konvertierung/Kompilierung in VB / VB.net wäre eine Möglichkeit - so weit entfernt ist das nicht.
Und der vb.net Kompiler ist auf jedem PC mit Framework am Besten V2 schon vorhanden.

Gruß
LotPings
Mitglied: 76109
76109 30.04.2009 um 14:39:57 Uhr
Goto Top
Hallo LotPings,

also, ich habe das jetzt nochmal mit Textausgabe getestet und festgestellt, dass die Farbumschalterei mit Textausgabe nicht so optimal funktioniert.

Aber kann man in VB-Script J-Script einbinden? Da gibt es diese Möglichkeit:
var strVariable = "Dies ist eine Zeichenfolge";  
strVariable = strVariable.fontcolor("red");  

Gruß Dieter
Mitglied: 77559
77559 30.04.2009 um 16:19:33 Uhr
Goto Top
Du hast die script56.chm Datei schon heruntergeladen und in dein "%SYSTEMROOT%\HELP" Verzeichnis kopiert?

Wenn du in der Datei suchst findest du:
Setzt das HTML-Tag <FONT> mit dem COLOR-Attribut um Text in einem String-Objekt.

In der console gibts es aber kein HTML - das bezieht sich auf in HTA oder HTML eingebettete Script Blocks.

Gruß
LotPings
Mitglied: 76109
76109 30.04.2009 um 20:02:48 Uhr
Goto Top
Hallo LotPings,

OK, danke für die Info.


Gruß Dieter
Mitglied: Nitrogenius
Nitrogenius 30.04.2009 um 21:05:27 Uhr
Goto Top
Hallo,

Danke für die Antworten bisher.
Schade dass man da nichts machen kann. Bin in VB nicht fit und werde es daher auch nicht angehen (Code hat 6 Funktionen und zahlreiche Schleifen).

Mit dem vorletzten Beitrag kann ich leider nicht anfangen, u.a. script56.chm sagt mir nichts. Zudem muss das Script auf jedem Computer lauffähig sein, ohne vorige Einstellungen.

Sollte irgendwem noch ein Kniff bekannt sein, wäre ich wirklich dankbar.

Die Sache mit javascript geht sicher nicht, oder?

Lg,
Manuel
Mitglied: 77559
77559 30.04.2009 um 21:39:21 Uhr
Goto Top
Leider nein,
javascript und jscript sind nicht das selbe.

script56.chm ist nur die Hilfe-Datei für vb- und jscript; die sollte jeder der eine Variante benutzt im Zugriff haben.

Links und auch andere interessante Info zum Scripten gibts u.A. auch hier: Dieseyer

Einen schönen Feiertag!
Mitglied: 76109
76109 02.05.2009 um 08:28:37 Uhr
Goto Top
Hallo Nitrogenius,

für Dein Problem habe ich eine etwas andere Lösung gefunden, die Du ja mal ausprobieren kannst.

Hiermit schreibst Du Deine Textmeldungen mit Farbangaben in eine HTA-Datei, die dann in einem
Windows-Fenster angezeigt werden.

Die Farbenwerte für den Hintergrund und Schrift können in verschiedenen Formaten angegeben werden.
Siehe Beispiel Const: Red1, Red2, Red3. Die Hintergrundfarbe wird mit Const BodyBG festgelegt.

Eine riesige HTML-Farbtabelle mit Namen, Hex-Werten und RGB-Werten sind hier zu finden:

http://www.farb-tabelle.de/de/farbtabelle.htm

Die Hta-Datei wird in dem Ordner abgespeichert, in dem sich auch das VB-Script befindet und bei
Beendigung des Scripts gelöscht.


Option Explicit

Const WindowSize = "640, 480"  

Const BodyBG = "#FFFFFF"  

Const Red1 = "#FF0000"		'Farbwert als Hex  
Const Red2 = "red"		'Farbwert als Name  
Const Red3 = "rgb(255,0,0)"	'Farbwert als RGB(R,G,B) Byte-Dezimal 0-255  

Const DarkBlue = "#00008B"  
Const DarkGreen = "#006400"  
Const DarkOrange = "#EE7600"  
Const DarkMagenta = "#8B008B"  

Dim Fso, HtaFile, HtaPath

'Main Beg  

    Call OpenHtaFile
    
    Call WriteHtaFile("Textausgabe", Red1)  
    Call WriteHtaFile("Textausgabe", Red2)  
    Call WriteHtaFile("Textausgabe", Red3)  
    Call WriteHtaFile("Textausgabe", DarkBlue)  
    Call WriteHtaFile("Textausgabe", DarkGreen)  
    Call WriteHtaFile("Textausgabe", DarkOrange)  
    Call WriteHtaFile("Textausgabe", DarkMagenta)  

    Call ShowHtaFile	
 
    Wscript.Quit

'Main End  


Private Sub OpenHtaFile()
    Set Fso = CreateObject("Scripting.FileSystemObject")  
    HtaPath = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Ausgabe.Hta"  
    Set HtaFile = Fso.CreateTextFile(HtaPath)

    With HtaFile
        .WriteLine "<html>"  
        .WriteLine "<head>"  
        .WriteLine "<title>Textausgabe</title>"  
        .WriteLine "<head>"  
        .WriteLine "<style type='text/css'>"  
        .WriteLine "body { font-family:Arial, Tahoma; font-size:14px; background-color:" & BodyBG & "; }"  
        .WriteLine "</style></head>"   
        .WriteLine "<body onLoad='window.resizeTo(" & WindowSize & ")'>"  
    End With
End Sub

Private Sub WriteHtaFile(ByRef Text, ByRef Color)
    HtaFile.WriteLine "<font color='" & Color & "'>" & Text & "</font><br>"  
End Sub

Private Sub ShowHtaFile()
    Dim Shell
    
    With HtaFile
        .WriteLine "</body>"  
        .WriteLine "</html>"  
        .Close
    End With
    
    Set Shell = CreateObject("Wscript.Shell")  

    Shell.Run HtaPath, 1, True

    Fso.DeleteFile HtaPath
End Sub

Gruß Dieter

[Edit] Aktualisiert 03.05.2009 - 12:20 Fenstergröße definieren[/Edit
Mitglied: 77559
77559 02.05.2009 um 16:56:07 Uhr
Goto Top
Hallo Dieter,

bei der Kombination vbscript und html muß ich an hta denken,
damit könnte er doch statt auf die console in eine Listbox ausgeben,
da geht auch Farbe.

PS Du definierst red1 bis red3 und benutzt red -> Fehler.

Zum Thema HTA ein paar Links:
HTA Developers Center - Script Center
Add Color Options to a List Box

Gruß
LotPings
Mitglied: 76109
76109 02.05.2009 um 17:17:06 Uhr
Goto Top
Hallo LotPings,

Ups, da habe ich wohl etwas übersehen. Die Konstanten hatte ich zum Schluss nochmal umbenannt und vergessen auch im Code zu ändernface-smile

Deine Links schau ich mir an. Danke.

Gruß Dieter
Mitglied: 76109
76109 02.05.2009 um 18:25:57 Uhr
Goto Top
Hallo LotPings,

also, ich habe den Code-Beitrag komplett neu aktualisiert.

Die Datei wird jetzt als HTA-Datei gespeichert und mit WShell gestartet, was auch den Vorteil hat,
dass das Script jetzt wartet, bis das Fenster geschlossen wird und dann normal weiter läuftface-big-smile

Nochmals Danke für den Tip.

Gruß Dieter
Mitglied: 77559
77559 02.05.2009 um 19:46:07 Uhr
Goto Top
Das ging ja schnell,

ich hatte das allerdings anders gedacht,
der OP könnte seinen vbscrript code direkt in die hta integrieren, dann kommen die "Farbigen" Texte in Echtzeit. Ich bin hier auch schon am rumprobieren und habe ein paar Ideen aus so einer hta einen DOS-Filter zu machen der LogZeiten einfügt, koloriert und eben gleichzeitig als TEE arbeitet. Das dauert aber noch etwas.

Guß
LotPings
Mitglied: 76109
76109 02.05.2009 um 19:58:16 Uhr
Goto Top
Hallo LotPings,

das hatte ich mir schon irgendwie gedacht, aber ehrlich gesagt habe ich jetzt keine Lust mehr, noch weiter
an dem Ding rumzubasteln. Es ist immer noch eine Alternative und wenn Du das anders hinkriegst, umso
besser. Dann schaue ich bei Dir ab.

Dann noch viel Spaß


Gruß Dieter
Mitglied: 76109
76109 02.05.2009 um 20:42:42 Uhr
Goto Top
Hallo nochmal,

PS. Eigentlich könnte man das ganze theoretisch auch über die <ANSI.SYS> machen. Oder?
Treiber laden und $[xy]-Anweisungen setzen....Meine Doskenntnisse enden bei DOS-Win98.

Gruß Dieter
Mitglied: 77559
77559 02.05.2009 um 22:19:37 Uhr
Goto Top
Leider habe ich noch keine funktionierende Ansi.sys Version mit cmd.exe gesehen.
Es gibt zwar ein paar Tricksereien mit der command.com,
aber da ich inzwischen NIE mehr einen Standard Bildschrim mit 80*25/43/50 Zeilen habe,
erzeugt das meist ein nervtötendes hin und her Gezappel, so das ich das lieber lasse.

Gruß
LotPings
Mitglied: 76109
76109 02.05.2009 um 22:42:53 Uhr
Goto Top
Hallo LotPings,

also, ich habe mir die HTA-Sache nochmal genauer angesehen und es ist eine Gute Idee,
das VB-Script in den BODY zu schreiben. Kann man ganz tolle Sachen machen.

Gibt es auch eine Möglichkeit das Hauptfenster in Breite und Höhe anzupassen?

Das mit der Ansi.Sys war nur so ne Idee, die mir gereade eingefallen war.


Gruß Dieter
Mitglied: 77559
77559 02.05.2009 um 22:55:27 Uhr
Goto Top
Zitat von @76109:

Gibt es auch eine Möglichkeit das Hauptfenster in Breite und
Höhe anzupassen?

Im script Block eine Sub einbauen
Sub Window_OnLoad
    window.resizeTo 800,350
End Sub

Gruß
LotPings
Mitglied: 76109
76109 02.05.2009 um 23:02:16 Uhr
Goto Top
Hallo LotPings,

Super, genau das habe ich gesucht und nicht gefunden. Dankeface-smile


Gruß Dieter
Mitglied: 76109
76109 03.05.2009 um 14:06:22 Uhr
Goto Top
Hallo LotPings,

hattest Du an sowas gedachtface-smile

<html>
<head>
<title>Textausgabe</title>
<HTA:APPLICATION 
     ID="objTextAusgabe"  
     APPLICATIONNAME="Text"  
     SCROLL="auto"  
     SINGLEINSTANCE="yes">  
</head>
<style type='text/css'>  
     body { font-family:Arial, Tahoma; font-size:14px; background-color:#F0F0F0; }
</style>
</head> 
 
<SCRIPT LANGUAGE="VBScript">  

    Const WindowWidth = 480
    Const WindowHeight = 320

    Const Red = "#FF0000"  
    Const DarkBlue = "#00008B"  
    Const DarkGreen = "#006400"  
    Const DarkOrange = "#EE7600"  
    Const DarkMagenta = "#8B008B"  


    Sub Window_OnLoad 	'Main Beg  

           window.resizeTo WindowWidth, WindowHeight

           Call WriteBodyText("Textausgabe", Red)  
           Call WriteBodyText("Textausgabe", DarkBlue)  
           Call WriteBodyText("Textausgabe", DarkGreen)  
           Call WriteBodyText("Textausgabe", DarkOrange)  
           Call WriteBodyText("Textausgabe", DarkMagenta)  
	
    End Sub		'Main End  


    Sub WriteBodyText(Byref Text, Byref Color)
           TextList.InnerHTML = TextList.InnerHTML & "<font color='" & Color & "'>" & Text & "</font><br>"  
    End Sub

</SCRIPT>

<body><span id = "TextList"></span></body>  
</html>

Gruß Dieter

PS. Datei als *.HTA speichern
Mitglied: 77559
77559 03.05.2009 um 16:24:57 Uhr
Goto Top
Sieht gut aus Dieter,
bei mir ist das eine Listbox in Fenstergröße und ich benutze den Font Lucida Console, Ausgabe optional mit Date+/Time Stamp.

Gruß
Mitglied: 76109
76109 03.05.2009 um 16:48:17 Uhr
Goto Top
Hallo LotPings,

die Fenstergröße habe ich ja nur mit reingenommen, dass man auch sieht, wie sie geändert werden kann.
Die FONT-Auswahl und Body-Hintergrundfarbe - dem Wusch entsprechend - zu ändern, sollte nicht alsoschwer sein.

Ich schlage vor Du setzt Deinen Code auch hierein, dann hat jeder die freie Auswahlface-smile

Gruß Dieter

PS. Werden bei Dir, die Seiten auch so doof angezeigt, sodass die Auswahlbuttons und Text zum Teil garnicht sichtbar sind?
Muss ständig in der Ansicht rumklicken, damit ich alles sehen kann.
Mitglied: 77559
77559 03.05.2009 um 17:11:33 Uhr
Goto Top
Zitat von @76109:
Hallo LotPings,

die Fenstergröße habe ich ja nur mit reingenommen, dass > man auch sieht, wie sie geändert werden kann.
Die FONT-Auswahl und Body-Hintergrundfarbe - dem Wusch entsprechend - zu ändern, sollte nicht alsoschwer sein.
Ack
Ich schlage vor Du setzt Deinen Code auch hierein, dann hat jeder die freie Auswahlface-smile
Ist ja WIP Work in Progress, wenn ich einen stabilen Zwischenstand ja gerne.

PS. Werden bei Dir, die Seiten auch so doof angezeigt, sodass die Auswahlbuttons und Text zum Teil garnicht sichtbar sind? Muss ständig in der Ansicht rumklicken, damit ich alles
sehen kann.
Ähh, was meinst du jetzt? Die Administrator.de Seite, deinen (mir unbekannten) Editor, oder was?

Gruß
Mitglied: 76109
76109 03.05.2009 um 17:26:28 Uhr
Goto Top
Zitat von @77559:
Ähh, was meinst du jetzt? Die Administrator.de Seite, deinen mir (unbekannten) Editor, oder was?

Die Admin-Seiten im IE.

Kriege in der Breite nur ca die 1/2 angezeigt.

Wenn ich dann in der Ansicht auf Schriftgrad mittel - auf dem es eh schon steht - noch mal drauf klicke, dann wird die Seite angepasst. Das muss ich aber nach jeder Aktionen wieder auf's neue machen.

Gruß Dieter
Mitglied: 77559
77559 04.05.2009 um 10:31:59 Uhr
Goto Top
Zitat von @76109:

Die Admin-Seiten im IE.

Kriege in der Breite nur ca die 1/2 angezeigt.

Sorry, da kann ich nicht helfen.
Benutze den FireFox auf 1920*1200 mit 130% und sehe alles auf einmal.


Gruß
Lotpings

PS: Der OP rührt sich nicht mehr - irgendwie haben wir wohl üübernommen.
Mitglied: Biber
Biber 04.05.2009 um 11:03:21 Uhr
Goto Top
Moin Lotpings und didi1954,

PS: Der OP rührt sich nicht mehr - irgendwie haben wir wohl übernommen.
Das war mir auch schon seit ein paar Zentimetern dieses kurzweiligen Threads aufgefallen.

Ich denke, der TO hat schon zwischen den Zeilen herausgelesen, dass sein Plan, es mit einfachen Mitteln unixlike (oder meinetwegen ANSI.SYS-like) auf beliebigen Rechnern umsetzen zu können eigentlich nicht geht.

Die Workarounds, die ihr hier produziert, mögen ja funktionieren... aber hey!
Wer möchte schon unbedingt mit einem Gabelstabler sein Frühstücksei köpfen?

Und BTW - wenn nun die früher so vielgenutzte direkte Bildschirmadressierung nun seit gefühlten 10 Jahren tabu ist (weil direkte Ansprache der Hardware nun eigentlich nicht sein kann) und dennoch seit ebenso vielen Jahren keine Lobby für ein "jedes Zeichen auf der Konsole in einer anderen Farbe schreiben können") erkennbar ist...

--> dann sollten wir das als feststehend hinnehmen.
Und die Antwort auf die Frage ist: "Geht nicht".

Grüße
Biber
Mitglied: 76109
76109 04.05.2009 um 11:26:27 Uhr
Goto Top
Hallo Lotpings,

Zitat von @77559:
Sorry, da kann ich nicht helfen. Benutze den FireFox auf 1920*1200 mit
Habe nur 1280x1024 auf 19-Zoll-TFT. Egal, vielleicht liegt es auch nur an den Sicherheits-Einstellungen.

PS: Der OP rührt sich nicht mehr
Vielleicht hat er anderweitig ein paar schöne Tage verbrachtface-smile
Wird sich schon noch melden und wenn nicht, gibt's bestimmt noch andere, die es interessiert.

Gruß Dieter
Mitglied: 76109
76109 04.05.2009 um 11:34:21 Uhr
Goto Top
Hallo Biber,

Zitat von @Biber:
Wer möchte schon unbedingt mit einem Gabelstabler sein > Frühstücksei köpfen?
oder mit einer Schlagbohrmaschine einen Nagel in die Wand schlagenface-smile

Immer wieder zum Scherzen aufgelegt.

Gruß Dieter