سؤال

من أجل الحصول على برنامج الإعداد الخاص بي أقرب بعض الشيء "نشر نقرة واحدة"، أود استخدام البرامج النصية Groovy لبدء / إيقاف العمليات الأخرى التي يتم التحكم فيها بواسطة البرامج النصية الخفقية، تعمل في أجزاء مختلفة من نظام الملفات وحتى الأجهزة المختلفة.

كيفية تنفيذ النصوص هذه وكيفية القيام بذلك هُم دليل العمل المعني؟

أنا أعرف جافا

java.lang.Runtime's exec()

ومع ذلك، هناك الكثير من المشكلات مع هذا وتساءلت عما إذا كان لدى Groovy نوعا من الاختصار لهذا أيضا؟

شكرًا!

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

المحلول

وأضاف Groovy طريقة Execute () بالسلسلة القديمة العادية، لذلك جرب هذا:

println "ls -la".execute().text

نصائح أخرى

يمكن استخدام الأسلوب EXECUTE () لتغيير الدلائل إذا كنت بادئة مع الأمر "cmd / c"، ثم استخدم أمبيرسند (على افتراض أن Windows) بأوامر سلسلة معا.

مثال، على افتراض أنك تريد الذهاب إلى الدليل الفرعي subdir. وتشغيل بضع ملفات الدفعات من هناك:

println "cmd /c cd subdir & batch1.bat & batch2.bat".execute().text

لست متأكدا مما إذا كانت هناك طريقة أفضل، ولكن هذا يعمل.

يمكنك أيضا استخدام ProcessBuilder وهو فئة Java Clothienent مقدمة مقدمة في Java 5.

processbuilder يتيح لك

  • تحديد دليل العمل
  • تحديد المتغيرات البيئية التي يجب أن تحتوي العملية عليها

يرى http://download.oracle.com/javase/1.5.0/docs/api/java/lang/processbuilder.html. للحصول على مثال موجز والمزيد من الوثائق.

إذا لم تكن خائفا من إنشاء بعض الكود القابل لإعادة الاستخدام، فيمكنك إنشاء كائن يلتف عملية. execute (). لقد أنشأت شيئا مثل هذا واستخدامه بانتظام.

إنشاء عملية جديدة مع:

def proc = "cmd". execute ()

بعد ذلك يمكنك استخدام "consumprocessuptutput ()" لإدارة مدخلات وإخراج "proc". سيتم تصرف أي شيء ترسله إليه كما لو أنك كتبته في قذيفة، وكل إخراج تلك الشل ستكون متاحا لك.

لفت كل هذا في إغلاق حتى تتمكن من القيام بذلك:

CMD ("CD   N Dir") {IF (IT.Contains ("autoexec.bat")) println ذلك؛ العودة الحقيقية }

للحصول على عرض يظهر فقط خط Autoexec.bat. لاحظ أنه حتى تعود صحيحا من الإغلاق، يتوفر Stdin من هذه العملية حتى تتمكن من إرسال المزيد من أسطر النص والتفاعل معها إلى أجل غير مسمى.

أنا استخدمها قليلا لأن الأوامر مثل "القرص المضغوط" و "dir" لا تعمل في ويندوز مع. execute ()، لذلك بسيط:

DEF DIMURESTING = CMD ("CD  Ndir")

سوف تحصل لي قائمة دليل سريعة بكل سهولة.

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