cscript - print output on same line on console?
Asked Answered
M

3

12

If I have a cscript that outputs lines to the screen, how do I avoid the "line feed" after each print?

Example:

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

The expected output should be:

..........

Not:

.
.  
.
.
.
.
.
.
.
.

In the past I've used to print the "up arrow character" ASCII code. Can this be done in cscript?

ANSWER

Print on the same line, without the extra CR/LF

for a=1 to 15
  wscript.stdout.write a
  wscript.stdout.write chr(13)
  wscript.sleep 200
next
Mulligan answered 24/5, 2010 at 14:29 Comment(0)
R
16

Use WScript.StdOut.Write() instead of WScript.Print().

Reproachful answered 24/5, 2010 at 14:48 Comment(3)
oops - regredded to my VB days. Yes, WScript.Print is the correct command!Mulligan
I meant you could use wscript.stdout.write instead of wscript.print to print on the same line without the new line characters.Reproachful
Note that this will fail when run in wscript, you might want to make sure the script is running in console.Persona
D
2

WScript.Print() prints a line, and you cannot change that. If you want to have more than one thing on that line, build a string and print that.

Dim s: s = ""

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

print s

Just to put that straight, cscript.exe is just the command line interface for the Windows Script Host, and VBScript is the language.

Dunigan answered 24/5, 2010 at 14:36 Comment(2)
Yes, wscript.print is right - regressed to my old VB script days... I'm sure you know you can "echo" command characters to the console and this is how you wrote the old "DOS" style applications. Can this still be done to manipulate the cursor?Mulligan
@Guy: VBScript's WScript.Print() works like VB6's Debug.Print() in regard to newlines, so... no, not to my knowledge.Dunigan
C
-1

I use the following "log" function in my JavaScript to support either wscript or cscript environment. As you can see this function will write to standard output only if it can.

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();
Cardiganshire answered 3/12, 2012 at 17:44 Comment(1)
This doesn't answer the question (how do I avoid the "line feed" after each print?)Cogency

© 2022 - 2024 — McMap. All rights reserved.