CScript - Печать вывода на той же линии на консоли?
-
04-10-2019 - |
Вопрос
Если у меня есть CScript, который выводит строки на экран, как избежать «Line Feed» после каждого печати?
Пример:
for a = 1 to 10
WScript.Print "."
REM (do something)
next
Ожидаемый выход должен быть:
..........
Нет:
.
.
.
.
.
.
.
.
.
.
В прошлом я использовал для печати кода ASCII символа «UP Arrow». Это может быть сделано в CScript?
ОТВЕЧАТЬ
Печать на одной линии, без дополнительного CR / LF
for a=1 to 15
wscript.stdout.write a
wscript.stdout.write chr(13)
wscript.sleep 200
next
Решение
Использовать WScript.StdOut.Write()
вместо WScript.Print()
.
Другие советы
WScript.Print()
Распечат линию, и вы не можете изменить это. Если вы хотите иметь более одного на этой строке, постройте строку и распечатайте ее.
Dim s: s = ""
for a = 1 to 10
s = s & "."
REM (do something)
next
print s
Просто чтобы положить это прямо, cscript.exe
Это просто интерфейс командной строки для хоста сценариев Windows, а VBScript - это язык.
Я использую следующую функцию «Журнал» в моем JavaScript для поддержки среды WScript или CScript. Как вы можете видеть, эта функция напишет на стандартный вывод, только если это может.
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();