عند تنفيذ ملف دفعي من جافا وقت التشغيل، تفشل أوامر DOS الأصلية في التشغيل

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

سؤال

عندما أقوم بتنفيذ ملف دفعي مباشرة في DOS، يعمل كل شيء كما هو متوقع. ولكن عندما أقوم بتنفيذ ملف دفعي من وقت تشغيل Java، فإنه سيتم تشغيل الأوامر التي استدعت ملفات جرة (أي استدعاء JVM). نعم هو كذلك ليس قم بتشغيل أي أوامر DOS الأصلية.

مشكلة واحدة هي أنه ليس لدي أي وحدة تحكم لمعرفة سبب حدوث ذلك. أنا أتساءل عما إذا كانت مشكلة أذونات، لكن ليس لدي أي فكرة. أي شخص هناك انظر هذا من قبل؟

يبدو رمز Java المستخدم شيئا مثل هذا:

Runtime.getRuntime (). Exec ("C: TargetFolder MyBatch.bat")؛ // (تحرير هنا للبساطة.)


يبدو ملف الدفعات شيئا كهذا (مشيرا إلى أن قمت بتبسيطه):
mybatch.bat:

اتصل بجافا myjar.jar blah blah --- نعم
نسخ Outputfile.out Outputfile.bak --- لا
mkdir testdir --- لا
اتصل بجافا myjar.jar blah blah --- نعم
اتصل بعض الشيء --- لا

خطوط - نعم تعمل بشكل جيد وأرى النتائج المتوقعة
--- لا توجد خطوط تفعل ليس تشغيل، ولكن ليس لدي أي فكرة لماذا لا تكون B / C لا توجد وحدة تحكم لتخبرني.

شكرا على اي مساعدة!! مايك

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

المحلول

يجب عليك تشغيل معالج أوامر Windows (Shell)، مما يمنحه الملف الدفعي كوسيطة.

Runtime.getRuntime().exec( "cmd.exe /C c:\\targetFolder\\myBatch.bat" );

نصائح أخرى

حقيقة أن مكالمات Java الثانية تنفذ تشير إلى أن جميع خطوطك لا تزال تنفذ، ولكن لا تعرض أي إخراج فقط. هل حاولت تشغيل صدى على

@ ecro on.

في السطر الأول الخاص بك؟

ثانيا، مشكلتك ربما دليل العمل خاطئ. حدد دليل العمل مثل

Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat",null,"c:\targetFolder"); 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top