سؤال

أنا أستخدم ملف دفعي لإيقاف خدمة Windows. أنا أستخدم sc الأمر ، لكنني منفتح على أفكار أخرى ، بالنظر إلى السؤال أدناه. المشكلة هي أن ملف الدُفعات يستمر في حين الخدمة تتوقف ( stop حجة ل sc يبدو فقط ل طلب التوقف - لا انتظر من أجل التوقف).

كيف يمكنني تعديل ملف الدُفعات إلى لا تتقدم حتى التوقف مكتمل?

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

المحلول

الاستخدام يمكن استخدام NET stop, ، وهو متزامن ، أي أنه سينتظر حتى تتوقف الخدمة.

نرى - توقف صافي

نصائح أخرى

sc stop webdriveservice
:loop
sc query webdriveservice | find "STOPPED"
if errorlevel 1 (
  timeout 1
  goto loop
)

كما ذكرنا أعلاه ، سترسل Net Stop أمر إيقاف إلى الخدمة ، ولكن إذا استغرقت الخدمة أكثر من وقت معين (20 ثانية أو نحو ذلك ، فإن ملاحظتي) ، فلن تنتظر صافي التوقف حتى تتوقف الخدمة قبل العودة.

لإيقاف ملف الدُفعات فعليًا حتى تتوقف الخدمة ، تحتاج إلى استخدام نهج مثل تلك الموضحة في هذه المواضيع:

كيفية التحقق مما إذا كانت الخدمة تعمل عبر ملف الدُفعات وبدء تشغيلها ، إذا لم تكن قيد التشغيل؟

إيقاف/بدء خدمة Windows عن بعد وانتظار فتحها/إغلاقها

أعتقد net stop [Service] يجب الانتظار حتى تتوقف الخدمة بالكامل قبل الانتقال. sc stop [Service] ببساطة يرسل رسالة "توقف" إلى الخدمة.

هذا الخام بعض الشيء ولكنه نجح بالنسبة لي من أجل التأكد من أنه يمكنني تحديد موعد لجدولة ملف دفعة يومية لإعادة تشغيل الخدمة بشكل أساسي.

توقف صافي [الخدمة

:حاول ثانية

مهلة /t 10 /nobreak

بداية صافية [الخدمة

إذا ٪ errorlevel ٪ neq 0 goto tryagain

أدرك مع مقتطف الرمز هذا أن هذا يمكن أن يؤدي إلى حلقة لا نهاية لها إذا كانت الخدمة لن تبدأ بنجاح. أردت فقط أن أظهر بشكل أساسي كيفية الالتفاف على المشكلة باستخدام مهلة حيث قد تستغرق الخدمة وقتًا أطول للتوقف عن ما يسمح به أمر الإيقاف الشبكي.

استخدم ال && الرمز بين الأوامر. ال && الرمز ينتظر لإنهاء الأمر السابق قبل المتابعة إلى الأمر التالي.

يجب أن تكون جميع الأوامر في نفس صف الأوامر. يمكنك استخدام العديد من الأوامر التي تريدها على التوالي.

يمكنك استخدام أيضا pause يأمر. مع هذا ، يطلب الضغط على أي مفتاح ، قبل المتابعة إلى الإجراء التالي.

فمثلا:

sc qdescription "MyServiceName" && echo. && sc stop "MyServiceName" && echo. && echo          [ "MyServiceName" service stopped ] && echo. && pause
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top