【问题标题】:cscript - print output on same line on console?cscript - 在控制台的同一行打印输出?
【发布时间】:2011-02-23 06:31:08
【问题描述】:

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

【问题讨论】:

    标签: windows ascii console-application wsh control-characters


    【解决方案1】:

    使用WScript.StdOut.Write() 而不是WScript.Print()

    【讨论】:

    • 哎呀——回到我的 VB 时代。是的,WScript.Print 是正确的命令!
    • 我的意思是您可以使用 wscript.stdout.write 而不是 wscript.print 在同一行上打印而无需换行符。
    • 请注意,在wscript 中运行时会失败,您可能需要确保the script is running in console
    【解决方案2】:

    我在我的 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();
    

    【讨论】:

    • 这没有回答问题 (how do I avoid the "line feed" after each print?)
    【解决方案3】:

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

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

    简单地说,cscript.exe 只是 Windows 脚本宿主的命令行界面,而 VBScript 是语言。

    【讨论】:

    • 是的,wscript.print 是正确的——回到我以前的 VB 脚本时代......我相信你知道你可以将命令字符“回显”到控制台,这就是你编写旧脚本的方式“DOS”风格的应用程序。仍然可以这样做来操纵光标吗?
    • @Guy:VBScript 的 WScript.Print() 在换行方面与 VB6 的 Debug.Print() 类似,所以...不,据我所知。
    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2014-09-06
    • 1970-01-01
    • 2022-11-24
    • 2021-04-28
    相关资源
    最近更新 更多