it-swarm.asia

تنفيذ أوامر متعددة مع سطر واحد

كيف يمكنني تنفيذ أوامر متعددة في سطر أوامر Windows بسطر واحد فقط؟

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

svn update; copy *.* c:\development\copy\

هذا لا يعمل بشكل واضح. هل هناك شخصية أو محدد مثل "؛" لأداء شيء مثل هذا؟

65
T. Stone

نعم هنالك. انها &.

&& سينفذ الأمر 2 عند اكتمال الأمر 1 بشرط ألا يفشل.

سيتم تنفيذ & بغض النظر.

105
Phoshi

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

start "" netsh dump && pause

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

أولاً ، اكتب الأوامر إلى ملف دفعي مؤقت (في هذه الحالة ، يمكنك استخدام & أو &&):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

لاحظ أنك بحاجة إلى "الهروب" من كل من "&"s (علامات الاقحام) برمز "^" للسماح بمعاملتها كأحرف عادية في أمر echo. بدلاً من ذلك ، يمكنك إنشاء ملف دفعي مؤقت باستخدام محرر نصوص ، مثل المفكرة.

ثم ، استخدم start لبدء ملف الدُفعات:

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"


ملاحظة: الزوج الفارغ من علامات الاقتباس المزدوجة هو لـ "Title" الذي سيتم عرضه في شريط العنوان لإطار الأوامر الذي سيتم فتحه start. هذه الوسيطة "Title" هي تقنيًا اختياري وسيطة إلى start ، لكنها في الواقع مطلوب ، إذا كان الأمر الذي سيتم تشغيله start مزدوجًا. على سبيل المثال ، في المثال الثاني:

start "" "temporary foobar.cmd"

إذا تركت الزوج الفارغ من علامات اقتباس مزدوجة مثل هذا:

start "temporary foobar.cmd"

ثم start سيفتح نافذة أمر جديدة ، ويستخدم "temporary foobar.cmd" كنافذة أمر جديدة "Title" ، و لا شيء سيتم تنفيذها في نافذة الأوامر الجديدة.)

إذا كنت ترغب في start في انتظار اكتمال ملف الدُفعات (بعد أن يتم رفض pause) ، قبل اكتمال start ، فأنت بحاجة إلى إضافة رمز /w إلى الأمر start:

start "" /w foobar.cmd

يمكنك وضع هذا معًا في سطر واحد وحتى إزالة (حذف) ملف الدُفعات المؤقت (foobar.cmd):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

لاحظ أنه إذا كنت تريد حذف ملف الدُفعات المؤقت ، فستحتاج إلى تشغيل start مع رمز التبديل /w ، وإلا ، فسيتم حذف ملف الدُفعات المؤقت قبل أن تتاح له فرصة التشغيل.

4
Kevin Fegan

على الأقل في MS-DOS 6.22 اعتدت على استخدام المفتاح Ctrl+T للحصول على نوع من رمز الفقرة. هذا يعمل تماما مثل & التي ذكرها Phoshi. هذا لن يعمل إلا إذا كان لديك doskey.exe قيد التشغيل.

4
Torben Gundtofte-Bruun

نعم استخدم &!

%command1% & %command2% يدير كلا الأمرين

%command1% && %command2% يدير الأمر الأول ، إذا نجح ذلك ، قم بتشغيل الأمر الثاني

%command1% || %command2% يدير الأمر الأول ، إذا فشل ذلك ، قم بتشغيل الأمر ثانية

انظر هنا

0
KIRBY INHALES U

في حالة رغبتك في التفاف الأمر الأول بعلامة if ولكنك لا تزال ترغب في تنفيذ الأمر الثاني بصرف النظر عن ذلك ، فعليك التفاف الأمر بـ cmd/c مثل هذا:

كمد/ج إذا وجدت abc. (rd/q abc) & echo hello

إذا لم تقم بادئة if مع cmd/c ، فسيصبح الأمر بالكامل جزءًا من if (الذي قد لا تريده).

0
user138334