cscript - sortie d'impression sur la même ligne sur la console?
-
04-10-2019 - |
Question
Si j'ai un cscript qui affiche les lignes à l'écran, comment puis-je éviter le « saut de ligne » après chaque impression?
Exemple:
for a = 1 to 10
WScript.Print "."
REM (do something)
next
Le résultat attendu devrait être:
..........
Non:
.
.
.
.
.
.
.
.
.
.
Dans le passé, je l'ai utilisé pour imprimer le code ASCII « flèche haut caractère ». Cela peut-il être fait cscript?
Réponse
Imprimer sur la même ligne, sans le supplément CR / LF
for a=1 to 15
wscript.stdout.write a
wscript.stdout.write chr(13)
wscript.sleep 200
next
La solution
Utiliser WScript.StdOut.Write()
au lieu de WScript.Print()
.
Autres conseils
WScript.Print()
imprime une ligne, et vous ne pouvez pas changer cela. Si vous voulez avoir plus d'une chose sur cette ligne, construire une chaîne et imprimer cela.
Dim s: s = ""
for a = 1 to 10
s = s & "."
REM (do something)
next
print s
Juste pour mettre ce droit, cscript.exe
est juste l'interface de ligne de commande pour Windows Script Host et VBScript est la langue.
J'utilise la fonction suivante « journal » dans mon JavaScript pour prendre en charge wscript ou de l'environnement cscript. Comme vous pouvez le voir cette fonction écrire sur la sortie standard que si elle peut.
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();