كيفية تمرير حرف أنبوب مقتبس إلى cmd.exe؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

أريد أن أدعو:

"c:\(...)\devenv.com" foo.sln /build "Debug|Win32"

باستخدام cmd.exe. في تجربتي ، cmd.exe إما يقوم بإخراج الزوج الأول من الاقتباسات (مما تسبب في عدم العثور على التنفيذ) أو الزوج الثاني من علامات الاقتباس (مما تسبب في تفسير شخصية الأنابيب). كيف يمكنك تمرير حرف أنبوب مقتبس إلى cmd.exe؟

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

المحلول

يمكنك إما القيام بذلك بالطريقة التي تفعله هناك ، مع إرفاق السلسلة مع | في علامات الاقتباس.

أو يمكنك الهروب منه مع لهجة محيط ^:

"c:\(...)\devenv.com" foo.sln /build Debug^|Win32

كملاحظة جانبية: لماذا تقوم ببناء هذا مع Devenv بدلاً من MSBuild؟

نصائح أخرى

شخصية Caret (^) هي شخصيات قذيفة خاصة للهروب من شخصية لأشياء مثل <،> ، (،) ، ...

cmd/c "echo Hello ^"  World"

انتاج |

Hello " World

إليك حل آخر (حل بديل؟) وجدت:

أولاً ، تأكد من أن متغير البيئة يحدد حرف الأنابيب ، على سبيل المثال:
set PIPE="|"

في وقت لاحق ، قم بتشغيل الأمر الذي يحدد اسم متغير البيئة المحدد أعلاه:
"c:\(...)\devenv.com" foo.sln /build Debug%PIPE%Win32

هذا يفعل الوظيفة حتى لو كان هناك أغلفة متعددة بين المتصل والكالي. أنا الآن أستخدمها مع سلسلة طويلة جدًا من الأغلفة: Python/Linux -> VirtualBox Guest's ExecuteProcess -> CMD/Windows -> devenv.com

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