استخدم Java لتنفيذ أمر الخفافيش إذا استغرقت عملية الخفافيش وقتًا طويلاً، فقد تتسبب في حدوث مشكلات في الحظر، ولن يتم تنفيذ الخفافيش حتى يتم إيقاف تشغيل الخادم.
يحب:
انسخ رمز الكود كما يلي:
وقت التشغيل r=Runtime.getRuntime();
العملية ع = فارغة؛
يحاول{
مسار السلسلة = "D:/test.bat"؛
p = r.exec("cmd.exe /c "+path);
انتظر () ؛
}قبض(استثناء ه){
System.out.println("خطأ في التشغيل:"+e.getMessage());
printStackTrace();
}
بشكل عام، لا يساعدك ملف exec الخاص بـ Java في التعامل مع مشكلات حظر سلاسل الرسائل، ويجب معالجته يدويًا.
بعد المعالجة:
انسخ رمز الكود كما يلي:
وقت التشغيل r=Runtime.getRuntime();
العملية ع = فارغة؛
يحاول{
مسار السلسلة = "D:/test.bat"؛
p = r.exec("cmd.exe /c "+path);
StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(), "ERROR");
errorGobbler.start();
StreamGobbler outGobbler = new StreamGobbler(p.getInputStream(), "STDOUT");
outGobbler.start();
انتظر () ؛
}قبض(استثناء ه){
System.out.println("خطأ في التشغيل:"+e.getMessage());
printStackTrace();
}
فئة StreamGobbler هي كما يلي:
انسخ رمز الكود كما يلي:
package com.test.tool;
import java.io.BufferedReader;
import java.io.IOException;
استيراد java.io.InputStream؛
استيراد java.io.InputStreamReader؛
استيراد java.io.OutputStream؛
import java.io.PrintWriter;
/**
* يستخدم للتعامل مع دفق الأخطاء ودفق الإخراج الناتج عن Runtime.getRuntime().exec
*/
الطبقة العامة StreamGobbler تمتد الموضوع {
InputStream هو؛
نوع السلسلة؛
OutputStream os;
StreamGobbler(InputStream هو نوع السلسلة) {
هذا (هو، اكتب، خالي)؛
}
StreamGobbler(InputStream هو، نوع السلسلة، إعادة توجيه OutputStream) {
this.is = is;
this.type = type;
this.os = إعادة التوجيه؛
}
تشغيل الفراغ العام () {
InputStreamReader isr = null;
BufferedReader br = null;
PrintWriter pw = null;
يحاول {
إذا (نظام التشغيل! = فارغ)
pw = new PrintWriter(os);
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
خط السلسلة = فارغ؛
بينما ((السطر = br.readLine()) != فارغة) {
إذا (pw! = فارغة)
pw.println(line);
System.out.println(type + ">" + line);
}
إذا (pw! = فارغة)
pw.flush();
} التقاط (IOException ioe) {
ioe.printStackTrace();
} أخيراً{
يحاول {
pw.Close();
br. Close();
isr.Close();
} قبض (IOException ه) {
printStackTrace();
}
}
}
}
قم بتشغيل الخفافيش ولن يتم حظره.