سؤال

إذا كان لديّ 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top