cscript - печатать вывод на той же строке на консоли? - PullRequest
8 голосов
/ 24 мая 2010

Если у меня есть cscript, который выводит строки на экран, как мне избежать «перевода строки» после каждой печати?

Пример:

for a = 1 to 10
  WScript.Print "."
  REM (do something)
next

Ожидаемый результат должен быть:

..........

Не

.
.  
.
.
.
.
.
.
.
.

Раньше я печатал код ASCII "символ стрелки вверх". Можно ли это сделать в cscript?

ОТВЕТ

Печать на одной строке, без дополнительного CR / LF

for a=1 to 15
  wscript.stdout.write a
  wscript.stdout.write chr(13)
  wscript.sleep 200
next

Ответы [ 3 ]

11 голосов
/ 24 мая 2010

Используйте WScript.StdOut.Write() вместо WScript.Print().

2 голосов
/ 24 мая 2010

WScript.Print() печатает строку, и вы не можете это изменить. Если вы хотите, чтобы в этой строке было несколько элементов, создайте строку и напечатайте ее.

Dim s: s = ""

for a = 1 to 10
  s = s & "."
  REM (do something)
next

print s

Проще говоря, cscript.exe - это просто интерфейс командной строки для Windows Script Host, а VBScript - это язык.

0 голосов
/ 03 декабря 2012

Я использую следующую функцию «log» в моем 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();
...