شرح - cmd windows 7




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

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

في لينوكس ، سأفعل ذلك على هذا touch thisfile ; ls -lstrh : touch thisfile ; ls -lstrh هذا touch thisfile ; ls -lstrh touch thisfile ; ls -lstrh .

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


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

كان الحل دمج مع start /b على موجه أوامر Windows 7.

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

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

start /b command1 parameters & command2 parameters

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


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

cmd /k echo hello && cd c:\ && cd Windows

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

DIR /S & START FILE.TXT

أو،

tasklist | find "notepad.exe"

Piping ( | ) هو أكثر لأخذ إخراج أمر واحد ، ووضعه في أمر آخر. و ( & ) هو مجرد قول هذا ، وهذا.


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

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

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

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

لذلك ، كنت أحاول تمكين مهمة محددة لتشغيل RegAsm (تسجيل التجميع) من قائمة السياق. كانت المشكلة التي واجهتها هي أن النتيجة ستطفو وتختفي قبل أن أتمكن من قراءتها. لذلك حاولت piping إلى 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"

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


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

gulp - default> build

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

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

gulp dist - build dist-folder

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

cd c:\xampp\htdocs\project & gulp & gulp watch

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

color 0a & start chrome.exe

في صحتك!


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

@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

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

set A=Hello & call echo %A%

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


الأمر بسيط: ما عليك سوى تمييزها باستخدام العلامة &&&&. مثال:

echo Hello World && echo GoodBye World

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





cmd