it-swarm.asia

كيف يمكنني تشغيل أمرين في سطر واحد في Windows CMD؟

أريد تشغيل أمرين في وحدة تحكم Windows CMD.

في نظام Linux ، سأفعل ذلك مثل هذا

touch thisfile ; ls -lstrh

كيف يتم ذلك على ويندوز؟

777
flybywire

مثل هذا على جميع أنظمة تشغيل Microsoft منذ عام 2000 ، وما زالت جيدة اليوم:

dir & echo foo

إذا كنت تريد تنفيذ الأمر الثاني فقط في حالة خروج الأول بنجاح:

dir && echo foo

يعود بناء جملة علامة الضم المفردة (&) لتنفيذ أوامر متعددة في سطر واحد إلى نظام التشغيل Windows XP و Windows 2000 وبعض إصدارات NT السابقة. (4.0 على الأقل ، وفقًا لأحد المعلقين هنا.)

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

تتبع البيانات التاريخية ، لأولئك الذين قد يجدونها تعليمية.

قبل ذلك ، كان بناء الجملة && مجرد ميزة في استبدال Shell 4DOS قبل إضافة هذه الميزة إلى مترجم أوامر Microsoft.

في أنظمة التشغيل Windows 95 و 98 و ME ، يمكنك استخدام حرف الإخراج بدلاً من ذلك:

dir | echo foo

في الإصدار 5.0 من MS-DOS والإصدارات الأحدث ، من خلال بعض إصدارات Windows و NT السابقة من مترجم الأوامر ، كان فاصل الأوامر (غير الموثق) هو الحرف 20 (Ctrl + T) الذي سأمثله مع ^ T هنا.

dir ^T echo foo
1049
djdanlib

اقتباس من الوثائق:

استخدام أوامر متعددة ورموز المعالجة الشرطية

يمكنك تشغيل أوامر متعددة من سطر أوامر أو برنامج نصي واحد باستخدام رموز المعالجة الشرطية. عند تشغيل أوامر متعددة برموز معالجة شرطية ، تعمل الأوامر الموجودة على يمين رمز رمز المعالجة الشرطية بناءً على نتائج الأمر الموجود على يسار رمز المعالجة الشرطية.

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

يمكنك استخدام الأحرف الخاصة المدرجة في الجدول التالي لتمرير أوامر متعددة.

  • & [...]
    command1 & command2
    استخدم لفصل أوامر متعددة في سطر أوامر واحد. يقوم Cmd.exe بتشغيل الأمر الأول ، ثم الأمر الثاني.

  • && [...]
    command1 && command2
    استخدم لتشغيل الأمر التالي && فقط في حالة نجاح الأمر الذي يسبق الرمز. يقوم Cmd.exe بتشغيل الأمر الأول ، ثم يقوم بتشغيل الأمر الثاني فقط إذا تم إكمال الأمر الأول بنجاح.

  • || [...]
    command1 || command2
    استخدم لتشغيل الأمر التالي || فقط إذا كان الأمر السابق || فشل. يقوم Cmd.exe بتشغيل الأمر الأول ، ثم يقوم بتشغيل الأمر الثاني فقط إذا لم يكتمل الأمر الأول بنجاح (يتلقى رمز خطأ أكبر من الصفر).

  • ( ) [...]
    (command1 & command2)
    استخدم لتجميع أو تداخل أوامر متعددة.

  • ; or ,
    command1 parameter1;parameter2
    استخدم لفصل معلمات الأوامر.

526
Raihan

& هو مكافئ Bash لـ ; (أوامر التشغيل) و && هو Bash المكافئ لـ && (أوامر التشغيل فقط عندما لا يتسبب السابق في حدوث خطأ).

68
manojlds

يمكنك استخدام & لتشغيل الأوامر واحدة تلو الأخرى. مثال: c:\dir & vim myFile.txt

24
scrappedcola

إذا كنت ترغب في إنشاء اختصار cmd (على سبيل المثال على سطح المكتب الخاص بك) ، فقم بإضافة معلمة/k (يعني/k الاحتفاظ ،/c سوف يغلق النافذة):

cmd /k echo hello && cd c:\ && cd Windows
17
TroodoN-Mike

يمكنك استخدام call للتغلب على مشكلة متغيرات البيئة التي يتم تقييمها في وقت مبكر جدًا - على سبيل المثال.

set A=Hello & call echo %A%
13
SSi

لذلك ، كنت أحاول تمكين المهمة المحددة لتشغيل RegAsm (تسجيل التجميع) من قائمة السياق. كانت المشكلة التي واجهتني هي أن النتيجة سوف تومض وتختفي قبل أن أتمكن من قراءتها. لذا حاولت توجيه الإخراج إلى Pause ، والذي لا يعمل عند فشل الأمر (كما هو مذكور هنا أمر الإيقاف المؤقت لا يعمل في .bat النصي وهنا لا يعمل أمر الملف الدفعي PAUSE ). لذا جربت cmd /k لكن هذا يترك النافذة مفتوحة لمزيد من الأوامر (أريد فقط قراءة النتيجة). لذلك أضفت pause متبوعة exit إلى السلسلة ، مما أدى إلى ما يلي:

cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit

يعمل هذا كأنه سحر - يتم تشغيل RegAsm على الملف ويظهر نتائجه ، ثم "اضغط على أي مفتاح للمتابعة ..." يتم عرض "موجه" ، ثم يتم إغلاق نافذة موجه الأوامر عند الضغط على المفتاح.

ملاحظة بالنسبة للآخرين الذين قد يكونوا مهتمين ، يمكنك استخدام إدخالات ملف .reg التالية لإضافة اقتران dllfile إلى ملفات .dll ثم ملحق أمر RegAsm لذلك (لاحظ علامات الاقتباس والرسائل المائلة العكسية المتجاورة):

[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"

[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"

الآن لدي قائمة لطيفة انقر بزر الماوس الأيمن لتسجيل التجميع.

7
SNAFUBAR

يمكن استخدام عدد من رموز المعالجة عند تشغيل العديد من الأوامر على نفس الخط ، وقد يؤدي إلى معالجة إعادة التوجيه في بعض الحالات ، أو تغيير الإخراج في حالة أخرى ، أو الفشل فقط. إحدى الحالات المهمة هي وضع نفس أوامر السطر التي تعالج المتغيرات.

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

كما ترون في المثال أعلاه ، عندما توضع الأوامر التي تستخدم المتغيرات في نفس السطر ، يجب عليك استخدام التوسع المؤجل لتحديث قيمك المتغيرة. إذا تمت فهرسة المتغير الخاص بك ، استخدم أمر CALL مع معدّلات ٪٪ لتحديث قيمته في نفس السطر:

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
7
sambul35

cmd /c ipconfig /all & Output.txt

يقوم هذا الأمر بتنفيذ الأمر وفتح ملف Output.txt في أمر واحد

6
dpp.2325

من أجل تنفيذ أمرين في نفس الوقت ، يجب وضع رمز (& ampersand) بين الأمرين. مثل ذلك:

color 0a & start chrome.exe

في صحتك!

4
PryroTech

أحاول أن يكون لدي اثنين من الأصوات في نفس النافذة ، وهو أمر تسلسلي على نفس السطر. بعد الانتهاء من الأول ، قم بتشغيل الأمر الثاني.

كان الحل هو الجمع بين start /b في موجه أوامر Windows 7.

ابدأ كالمعتاد ، دون /b ، ثم ابدأ في نافذة منفصلة.

الأمر المستخدم للتشغيل في نفس السطر هو:

start /b command1 parameters & command2 parameters

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

4
sdcxp

حسنًا ، لديك خياران: الأنابيب ، أو فقط &:

DIR /S & START FILE.TXT

أو،

tasklist | find "notepad.exe"

تعد الأنابيب (|) أكثر من أجل أخذ إخراج أمر واحد ووضعه في أمر آخر. و (&) يقول فقط قم بتشغيل هذا وذاك.

4
PyDever

لا ، cd / && tree && echo %time%. الوقت المردد هو عند تنفيذ الأمر الأول.

لدى الأنابيب بعض المشكلات ، ولكنها ليست حرجة ما دام الناس يعرفون كيف تعمل.

2
notarealname

عندما تحاول استخدام أو التعامل مع المتغيرات في سطر واحد احذر من محتواها! مثلا متغير مثل ما يلي

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

قد يؤدي إلى الكثير من المتاعب غير المعقولة إذا كنت تستخدمها كـ %PATH%

  1. أقواس الإغلاق تنهي بيان مجموعتك
  2. لا تسمح لك علامات الاقتباس المزدوجة باستخدام %PATH% لمعالجة مشكلة الأقواس
  3. وما الذي سيحتويه المتغير المشار إليه مثل %USERPROFILE%؟
1
V15I0N

مثال آخر: على سبيل المثال ، عندما نستخدم نظام الإنشاء gulp ، بدلاً من

gulp - افتراضي> إنشاء

gulp build - بناء مجلد البناء

gulp watch - بدء مشاهدة الملف

gulp dist - إنشاء مجلد dist

يمكننا أن نفعل ذلك بسطر واحد:

cd c:\xampp\htdocs\project & gulp & gulp watch
1
Mile Mijatovic

إنها بسيطة: فقط قم بتمييزها باستخدام علامات &&. مثال:

echo Hello World && echo GoodBye World

سيتم طباعة وداعا العالم بعد مرحبا العالم.

1
Rajan Dhanowa

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

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

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

0
هادی کشاورز Hadi Keshavarz