لماذا يتم طرح رسالة "يتعذر على النظام العثور على ملصق الدُفعة المحدد" حتى في حالة وجود الملصق؟

StackOverflow https://stackoverflow.com/questions/232651

  •  04-07-2019
  •  | 
  •  

سؤال

أثناء تشغيل ملف دفعي في نظام التشغيل Windows XP، وجدت رسالة خطأ تظهر بشكل عشوائي:

لا يمكن للنظام العثور على تسمية الدفعة المحددة name_of_label

بالطبع التسمية موجودة.ما الذي يسبب هذا الخطأ؟

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

المحلول

في الواقع، تحتاج إلى شرطين لتحقيق ذلك:

  • يجب ألا يستخدم الملف الدفعي نهايات سطر CRLF
  • يجب أن تمتد التسمية التي تنتقل إليها إلى حدود الكتلة (على عكس التسمية و :end التي تعد مجرد اختصار لنهاية البرنامج النصي الخاص بك)

يرى. لا يمكن للنظام العثور على ملصق الدفعة المحدد و دفعة كما دفعة يمكن!

نصائح أخرى

ولقد حصلت نفس القضية من قبل. ومع ذلك، كان السبب الجذري لا CRLF على الإطلاق. كان عليه لأنه في السيناريو I تنفيذ برنامج خارجي مثل النملة، ولكن لم يضع CALL قبل النملة. لذلك، تأكد من CALL كل برنامج خارجي المستخدمة في البرنامج النصي الدفعي.

وهنا هي القضية وكيفية إصلاحه. القضية هي خلل أو ميزة في برنامج كمد دفعة DOS. أول بيان المشكلة واضحة. إذا كان لديك ملف دفعي DOS مع تسميات الهدف مثل ": dothis"، وفي نهاية التسمية لم يكن لديك مساحة ثم سيقوم الملف الدفعي لا تعمل إذا كان الخط المنتهية هم خط النهايات UNIX. هذا يعني أن لديك لتشغيل unix2dos على الملف قبل أن تتمكن من استخدامها.

والسبب الأساسي هو المعالج سطر الأوامر DOS، (برنامج شل)، يأخذ UNIX نهاية خط حرف كجزء من التسمية. منذ الذهاب إلى جزء لا يستخدم هذا كتسمية، يتم أبدا العثور عليها لأن مثل تسمية حقا لا وجود لها. الحل هو وضع مساحة إضافية في نهاية كل تسمية الهدف، أو حتى أفضل كل سطر. الآن UNIX نهاية خطوط لا تأتي للعب منذ الفضاء يعمل كفاصل ويعمل كل شيء.

إذا ملف دفعي له نهايات خط يونكس (فصل خط) وهذا يمكن أن يحدث في بعض الأحيان.

unix2dos في هذا الشأن ومشكلة يجب حلها.

ويجب أيضا التأكد من أن عند استدعاء النصوص الأخرى التي تستخدمها CALL، بدلا من دعوتهم في بيئة المتصل.

وأنا واجهت مشكلة مشابهة للتو مع ملف .cmd ويندوز 8. وكان الحل لتغيير كل نهايات خط لأسلوب CR + LF DOS. وكانت قضية مربكة لأن الملف الدفعي يعمل معظمهم وخطوط إعادة ترتيب تغير الواقع.

وملف .CMD يشبه:

call:function_A "..\..\folderA\"
call:function_B "..\..\folderB\"
call:function_C "..\..\folderC\"
call:function_D "..\..\folderD\"
goto:eof

:function_A
rem do stuff
goto:eof

...etc...

وظيفة C سيسبب خطأ "النظام لا يمكن العثور على تسمية دفعة المحدد". ومن الغريب أنه يمكن أن يذهب بعيدا من خلال إعادة ترتيب المكالمات. تغيير خط النهايات من 0x0A إلى 0x0D0A يبدو أنها ثابتة.

وربما VonC تعني "الملف الدفعي يجب استخدام خط النهايات CRLF".

وكان لي هذه المشكلة بعد نسخ أمر بداية من كلمة ولصقه في إطار الأوامر. كان هناك خيار مع "-" على الجبهة، ويعتقد أن تبدو نفس DOS "-" لم يكن :) بعد كتابة "-" بنفسي تم حل هذه القضية وعملت دفعة ... من الصعب العثور على القضية ....

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