cscript - Druckausgabe auf der gleichen Linie auf der Konsole?
-
04-10-2019 - |
Frage
Wenn ich ein cscript dass Ausgänge Linien auf den Bildschirm, wie vermeide ich den „Zeilenvorschub“ nach jedem Druck?
Beispiel:
for a = 1 to 10
WScript.Print "."
REM (do something)
next
Die erwartete ausgegeben werden soll:
..........
Nicht:
.
.
.
.
.
.
.
.
.
.
In der Vergangenheit habe ich verwendet, um den „Pfeil nach oben Zeichen“ ASCII-Code zu drucken. Kann dies in cscript getan werden?
ANTWORT
Drucken auf der gleichen Linie, ohne die zusätzlichen CR / LF
for a=1 to 15
wscript.stdout.write a
wscript.stdout.write chr(13)
wscript.sleep 200
next
Lösung
Verwenden WScript.StdOut.Write()
statt WScript.Print()
.
Andere Tipps
WScript.Print()
druckt eine Zeile, und Sie können das nicht ändern. Wenn Sie mehr als eine Sache auf dieser Linie haben, einen String zu bauen und drucken.
Dim s: s = ""
for a = 1 to 10
s = s & "."
REM (do something)
next
print s
Just dass gerade zu setzen, cscript.exe
ist nur die Befehlszeilenschnittstelle für das Windows Script Host und VBScript ist die Sprache.
Ich benutze das folgende „Log“ -Funktion in meinem JavaScript entweder wscript oder cscript-Umgebung zu unterstützen. Wie Sie diese Funktion nur auf die Standardausgabe schreiben, wenn sehen, es kann.
var ExampleApp = {
// Log output to console if available.
// NOTE: Script file has to be executed using "cscript.exe" for this to work.
log: function (text) {
try {
// Test if stdout is working.
WScript.stdout.WriteLine(text);
// stdout is working, reset this function to always output to stdout.
this.log = function (text) { WScript.stdout.WriteLine(text); };
} catch (er) {
// stdout is not working, reset this function to do nothing.
this.log = function () { };
}
},
Main: function () {
this.log("Hello world.");
this.log("Life is good.");
}
};
ExampleApp.Main();