وسيطات سطر أوامر Apache Ant بدون علامات الاقتباس المزدوجة - هل هذا ممكن؟

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

سؤال

اضطررت اليوم إلى إضافة مهمة إلى ملف Apache Ant.ينبغي أن يكون سطر الأوامر شيء من هذا القبيل

myprogram --param1 --param2 path\somefile 2> path\logfile

كانت المشكلة في هذا أنني إذا استخدمت شيئًا مثل ما يلي لهذا الغرض

<exec executable="$(myprogram)"
  <arg value="--param1">
  <arg value="--param2">
  <arg path="$(somefile)">
  <arg value="2>">
  <arg path="$(logfile)">
</exec>

تم اقتباس جميع الوسائط، لذلك بدا الأمر كما يلي:

myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile"

وهذا ليس سيئًا ولطيفًا بشكل خاص إذا كان لديك مسافات في ملفاتك/مسارك، ولكنه يدمر الأنبوب المؤدي إلى ملف السجل (بدلاً من ذلك، يعتقد البرنامج أن هناك وسيطتين إضافيتين للملف "2>" و"path\logfile").

لقد تعاملت مع هذا عن طريق استدعاء برنامج نصي دفعي بدلاً من ذلك يريد الملفات كمعلمات فقط، لكنني تساءلت:هل من الممكن القيام بذلك دون مثل هذا الحل؟

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

المحلول

عند تشغيل "myprogram --param1 --param2 path\somefile 2> path\logfile"، تنتهي الوسائط الخاصة ببرنامجك عند "2>".إعادة توجيه الملف هي إحدى عمليات الصدفة الخاصة بك، والتي لا يتم استخدامها من داخل ant.إذا نظرت إلى المستندات الخاصة بـ مهمة النمل exec, ، سترى أنه يدعم إعادة التوجيه عبر ملف انتاج يصف.

نصائح أخرى

هل حاولت <arg line="..." />؟

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

واجهت مشكلة مماثلة كما حدث في بداية الموضوع.في سطر أوامر تنفيذ Java، كنت بحاجة إلى إضافة ملفات المصدر كوسيطات منفصلة، ​​وليس كوسيطة واحدة مع علامات اقتباس حولها.لقد استخدمت <arg value="..." /> العلامة، ولكن باستخدام <arg line="..." /> كما اقترح nullptr حل مشكلتي.

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