كيفية تمرير حرف أنبوب مقتبس إلى cmd.exe؟
-
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