Cscript - طبع إخراج على نفس الخط على وحدة التحكم؟
-
04-10-2019 - |
سؤال
إذا كان لديّ cscript يقوم بإخراج الخطوط على الشاشة ، فكيف يمكنني تجنب "تغذية الخط" بعد كل طباعة؟
مثال:
for a = 1 to 10
WScript.Print "."
REM (do something)
next
يجب أن يكون الإخراج المتوقع:
..........
لا:
.
.
.
.
.
.
.
.
.
.
في الماضي ، اعتدت طباعة رمز ASCII "UP ASTROW ASCROW". هل يمكن القيام بذلك في CScript؟
إجابه
طباعة على نفس الخط ، بدون CR/LF الإضافية
for a=1 to 15
wscript.stdout.write a
wscript.stdout.write chr(13)
wscript.sleep 200
next
المحلول
يستخدم WScript.StdOut.Write()
بدلاً من WScript.Print()
.
نصائح أخرى
WScript.Print()
يطبع خط ، ولا يمكنك تغيير ذلك. إذا كنت ترغب في الحصول على أكثر من شيء واحد على هذا الخط ، فقم ببناء سلسلة وطباعة ذلك.
Dim s: s = ""
for a = 1 to 10
s = s & "."
REM (do something)
next
print s
فقط لوضع ذلك مستقيما ، cscript.exe
هي مجرد واجهة سطر الأوامر لمضيف Windows Script ، و Vbscript هي اللغة.
يمكنني استخدام وظيفة "السجل" التالية في 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();