سؤال

حاليًا، ينبثق WScript مربع رسالة عند وجود خطأ في البرنامج النصي.يتم استدعاء هذه البرامج النصية بواسطة عمليات أخرى، ويتم تشغيلها على الخادم، لذلك لا يوجد أحد لتجاهل مربع الخطأ.

ما أريده هو تفريغ رسالة الخطأ إلى STDOUT، والتنفيذ لإرجاع عملية الاستدعاء.يؤدي الظهور كـ MSGBox إلى تعليق الأمر برمته.

أفكار؟

هل كانت مفيدة؟

المحلول

هذه هي الطريقة التي يجب أن تقوم بها بتشغيل المهام الدفعية للبرنامج النصي:

cscript //b scriptname.vbs

نصائح أخرى

لا تستخدم WScript؛استخدم سي سكريبت.في موجه أوامر Windows، اكتب ما يلي لعرض التعليمات.

cscript //?
أقترح ما يلي:
cscript //H:CScript
سيؤدي هذا إلى جعل CScript مترجم البرمجة النصية الافتراضي الخاص بك.يقوم CScript بطباعة الرسائل إلى وحدة التحكم (أي stdout) حسب رغبتك.(لا يستخدم Windows Dialog.) قد ترغب أيضًا في تجربة مفتاح // B ، لكن لا يمكنني معرفة ما إذا كان يجب تشغيل ذلك لكل نص أو لا.إذا كان التبديل مستمرًا ولمرة واحدة مثل المفتاح //H، فقد يكون هذا مناسبًا لك؛إذا لم يكن الأمر كذلك، فقد تحتاج إلى تعديل كافة البرامج البعيدة الخاصة بك لتضمينها.من المعلومات التي قدمتها، أعتقد أن مجرد تغيير المترجم الافتراضي (//H) سيفعل ما تريد.

ستحتاج أيضًا إلى إضافة نوع من معالجة الأخطاء لمنع انتهاء البرنامج النصي عند حدوث خطأ.في Visual Basic Scripting Edition، أسهل ما يمكنك فعله إذا كنت تريد فقط تجاهل الأخطاء هو إضافة ما يلي إلى الجزء العلوي من البرنامج النصي الخاص بك.

On Error Resume Next
يرى http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx للمزيد من المعلومات.

استخدم WScript.Echo بدلاً من MsgBox.وقم بتشغيل البرنامج النصي باستخدام CSCRIPT بدلاً من WSCRIPT.

لم تذكر اللغة التي تستخدمها.إذا كنت تستخدم VBScript، فيمكنك كتابة معالج الأخطاء باستخدام الملف على خطأ... إفادة.إذا كنت تستخدم JScript، فيمكنك استخدام ملف حاول {} التقاط (x) {} حاجز.

لا تفعل هذا:

فبسكريبت:خطأ في الصفحة، إذهب للتالي

إنجليزي:"عندما يكون لديك خطأ، تجاهله واستمر في المضي قدمًا."

أقترح عليك وضع رمز البرنامج النصي الخاص بك في فرعي - على سبيل المثال. DoWork - وقم بترميز البرنامج النصي الخاص بك مثل:

On Error Resume Next

DoWork

If Err.Number <> 0 Then

    If "CSCRIPT.EXE" = UCase( Right( WScript.Fullname, 11 ) ) Then
        WScript.StdErr.Write Err.Number & ": " & Err.Description
    Else
        WScript.Echo Err.Number & ": " & Err.Description
    End If
    WScript.Quit 1
End If

Private Sub DoWork

    ... your code ...

End Sub

بهذه الطريقة، عند تشغيل البرنامج النصي الخاص بك باستخدام cscript //b, ، وفشل، سوف تحصل على إخراج رسالة خطأ إلى stderr وسيتلقى المتصل مستوى خطأ غير صفري.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top