cscript - Salida de impresión en la misma línea en la consola?
-
04-10-2019 - |
Pregunta
Si tengo un cscript que da salida a las líneas de la pantalla, ¿cómo puedo evitar el "salto de línea" después de cada impresión?
Ejemplo:
for a = 1 to 10
WScript.Print "."
REM (do something)
next
El resultado esperado debe ser:
..........
No:
.
.
.
.
.
.
.
.
.
.
En el pasado he utilizado para imprimir la "flecha arriba personaje" código ASCII. ¿Es posible hacerlo en cscript?
RESPUESTA
Imprimir en la misma línea, sin el CR extra / LF
for a=1 to 15
wscript.stdout.write a
wscript.stdout.write chr(13)
wscript.sleep 200
next
Solución
Uso WScript.StdOut.Write()
en lugar de WScript.Print()
.
Otros consejos
WScript.Print()
imprime una línea, y no se puede cambiar eso. Si usted desea tener más de una cosa en esa línea, construir una cadena y que imprimir.
Dim s: s = ""
for a = 1 to 10
s = s & "."
REM (do something)
next
print s
Sólo para poner recta que, cscript.exe
es sólo la interfaz de línea de comandos para Windows Script Host, y VBScript es el lenguaje.
Yo uso la siguiente función de "registro" en mi Javascript para apoyar cualquiera wscript o ambiente cscript. Como se puede ver esta función escribirá en la salida estándar sólo si se puede.
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();