أحاول الحصول على النتيجة عند تشغيل أي برامج خارجية عبر سطر الأوامر في أوامر Windows. لذا استخدمت عقدة Execute Command لتنفيذ الأوامر، لكنها تعطيني دائماً stdout فارغة. في الإصدار 1.xx كنت أتمكن من رؤية مخرجات stdout، لكن مع الإصدار 2.xx لم أعد أراها. حاولت أيضاً إعادة توجيه المخرجات إلى ملف txt، لكن ملف txt سيظل فارغاً. تشغيل الأمر محلياً يعمل، لكن تشغيله داخل n8n لا يعطي مخرجات stdout
للتحقق من أن stdout يعمل بالفعل، أزل عمليات إعادة توجيه الملفات وأمر cd. استخدم المسار المطلق للملف القابل للتنفيذ. هذا يلغي احتمال فشل cd أو إخفاء الإخراج في ملف.
إذا كان الأمر أعلاه لا يزال يُرجع stdout فارغًا، فمن المحتمل أن يكون الخطأ مخفيًا في stderr. يمكنك فرض Windows على دمج تدفق الخطأ في تدفق الإخراج بإضافة 2>&1 إلى نهاية أمرك.
نظرًا لأنك تعمل على Windows Server 2022، تحقق من المستخدم الذي يقوم بتشغيل عملية n8n.
إذا كان n8n يعمل كـ خدمة أو تحت مستخدم مختلف عن “Administrator”، فلن تكون لديه إذن بالكتابة إلى C:\Users\Administrator\Desktop\....
الحل: انقل أدواتك ومجلدات الإخراج إلى دليل على مستوى الجذر مثل C:\n8n-tools\ وامنح “التحكم الكامل” لمجموعة Everyone أو المستخدم المحدد الذي يقوم بتشغيل n8n.
حاولت تنفيذ كلا الأمرين ولا زال يعيد إخراجًا فارغًا. لا توجد مستخدمون آخرون على هذا الخادم و n8n لا يعمل كخدمة. حاولت نقل الأدوات إلى مستوى الجذر وهذا لا يزال يعطي إخراجًا فارغًا
لا يعمل باستخدام علامات الاقتباس المزدوجة 2x لن يتم التعرف عليها كأمر
'""C:\MediaInfo_CLI_26.05_Windows_x64\MediaInfo.exe" "test.mkv""' is not recognized as an internal or external command, operable program or batch file.
"C:\MediaInfo_CLI_26.05_Windows_x64\MediaInfo.exe" "C:\Users\Administrator\Desktop\Anime\Upload\[Gecko] Muzik Tiger In the Forest [2025, TVER.WEB-DL 1080P]\[Gecko] Muzik Tiger In the Forest - S01E01 [TVER.WEB-DL 1080P AVC, AAC][D41B8A37].mkv"
إذا كان الناتج لا يزال فارغًا، فهذا يعني أن MediaInfo يتعطل قبل أن يتمكن من طباعة أي شيء. لرؤية تقرير الأعطال «المخفي»، أضف 2>&1 في النهاية. يفرض هذا ظهور الأخطاء في الناتج:
"C:\MediaInfo_CLI_26.05_Windows_x64\MediaInfo.exe" "C:\Users\Administrator\Desktop\Anime\Upload\[Gecko] Muzik Tiger In the Forest [2025, TVER.WEB-DL 1080P]\[Gecko] Muzik Tiger In the Forest - S01E01 [TVER.WEB-DL 1080P AVC, AAC][D41B8A37].mkv" 2>&1
بما أنك بالفعل على إصدار CLI وحتى إعادة توجيه الملف تخرج فارغة، فإن الأمر بالتأكيد قيد التنفيذ — MediaInfo نفسه لا ينتج شيئًا. هناك شيئان لم يتم التحقق منهما بعد في هذا الخيط:
1. انظر إلى حقل exitCode في مخرجات عقدة Execute Command (يتم إرجاعه جنبًا إلى جنب مع stdout/stderr). هذا الرقم الواحد يقسم المشكلة إلى نصين: 0 يعني أن MediaInfo تم تشغيله “بنجاح” ولم يطبع شيئًا فعلًا، وعدم صفر يعني أنه يفشل قبل إنتاج أي مخرجات.
2. ملف الاختبار الخاص بك يوجد على C:\Users\Administrator\Desktop. هذا قد يشرح الفرق بين 1.x و 2.x: إذا تم بدء n8n 2.x بطريقة مختلفة عن 1.x (حساب مستخدم مختلف، خدمة، مهمة مجدولة، جلسة طرفية مختلفة)، فقد لا تتمكن العملية من قراءة مجلد Desktop لحساب آخر — و MediaInfo صامت بشأن ملفات الإدخال غير القابلة للقراءة. اختبار سريع: انسخ الفيديو إلى C:\n8n-tools\ (والذي تعرف بالفعل أن n8n يمكنه الوصول إليه، لأن dir عمل هناك) وقم بتشغيل MediaInfo على تلك النسخة.
واختبار عزل لمدة 30 ثانية لا يحتاج إلى ملف إدخال على الإطلاق:
شغّله داخل عقدة Execute Command. إذا عادت سلسلة الإصدار، فإن الملف الثنائي ونظام stdout بخير والمشكلة هي الوصول إلى ملف الإدخال (النقطة 2). إذا كان حتى --Version فارغًا داخل n8n بينما يطبع في نافذة cmd الخاصة بك، فإن المشكلة هي سياق العملية التي يعمل تحتها n8n، وليس الملف.
هناك طريقة هروب أخرى جديرة بالمعرفة: يمكن لـ MediaInfo أن يكتب تقريره مباشرة إلى ملف بنفسه، متجاوزًا stdout تمامًا:
إذا حصل report.json على محتوى بينما stdout يبقى فارغًا، فقد عزلت المشكلة لالتقاط stdout؛ إذا كان فارغًا أيضًا، فـ MediaInfo لم يقرأ الملف أبدًا. (يوفر لك --Output=JSON أيضًا تحليل التخطيط النصي لاحقًا.)
رمز الخروج هو 0 بينما stdout فارغ. لم أكن أعرف أن Mediainfo لديها ميزة تسجيل مدمجة وأنها فعلت ما أردته بحفظ المخرجات في ملف. في الأساس "C:\MediaInfo_CLI_26.05_Windows_x64\MediaInfo.exe" --Output=JSON --LogFile=C:\n8n-tools\report.json "C:\n8n-tools\your_video.mkv" قام بهذه المهمة فقط كان stdout لا يزال فارغًا لكن طالما أنه تم حفظه في ملف json يمكنني تحليله لاحقًا.
يسعدني أن مسار --LogFile ساعدك في تجاوز المشكلة، وشكراً لإغلاقك الحلقة بالنتائج الدقيقة — “exitCode 0 لكن stdout لا يزال فارغاً” هي تفاصيل ذهبية للشخص التالي الذي يصل إلى هنا. بما أن echo و dir يعملان لكن ملف .exe خارجي يبقى صامتاً حتى عند النجاح، يبدو فعلاً أن هذا تغيير في الإصدار 2.x بخصوص كيفية التقاط Execute Command لمخرجات العمليات الفرعية على Windows — قد يكون من الجدير تقديم تقرير عيب حتى يتم إصلاحه في المصدر. استمتع بالأتمتة!