cscript - 如何将输出打印在控制台的同一行?

12
如果我有一个输出行到屏幕的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个回答

15

使用WScript.StdOut.Write()替代WScript.Print()


糟糕 - 我回忆起了我的 VB 时代。是的,WScript.Print 是正确的命令! - Guy
1
我是说你可以使用wscript.stdout.write而不是wscript.print来打印在同一行上,而不带有换行符。 - naivnomore
请注意,当在wscript中运行时,此代码将失败,您可能需要确保脚本在控制台中运行 - Nickolay

2

WScript.Print()会打印一行,您无法更改它。如果您想在该行上有多个内容,请构建一个字符串并将其打印出来。

Dim s: s = ""

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

print s
< p>需要澄清的是,cscript.exe只是Windows脚本宿主的命令行界面,而VBScript则是编程语言。


是的,wscript.print 是正确的——退回到我旧的 VB 脚本时代……我相信你知道可以将命令字符“echo”到控制台,这就是你编写旧的“DOS”风格应用程序的方式。现在是否仍然可以使用它来操纵光标? - Guy
@Guy:就我所知,VBScript的 WScript.Print() 在换行方面的工作方式类似于VB6的 Debug.Print() - Tomalak

-1
我在JavaScript中使用以下的"log"函数,以支持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();

这并没有回答问题(“如何避免每次打印后的‘换行’?”)。 - Helen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接