আমি কীভাবে উইন্ডোজ সিএমডিতে একটি লাইনে দুটি কমান্ড চালাব?


957

আমি একটি উইন্ডোজ সিএমডি কনসোলে দুটি কমান্ড চালাতে চাই।

লিনাক্সে আমি এটি এটি করব

touch thisfile ; ls -lstrh

উইন্ডোজে এটি কীভাবে হয়?

উত্তর:


1316

2000 সালের পর থেকে সমস্ত মাইক্রোসফ্ট ওএসে এটি পছন্দ করুন এবং আজও ভাল:

dir & echo foo

আপনি যদি দ্বিতীয় কমান্ডটি কার্যকর করতে চান তবে প্রথমটি সফলভাবে উপস্থিত থাকলে:

dir && echo foo

এক লাইনে একাধিক কমান্ড কার্যকর করার জন্য একক অ্যাম্পারস্যান্ড (&) সিনট্যাক্সটি উইন্ডোজ এক্সপি, উইন্ডোজ 2000 এবং কিছু পূর্ববর্তী এনটি সংস্করণে ফিরে যায়। (কমপক্ষে ৪.০, এখানে একজন মন্তব্যকারী অনুসারে।)

এটি সম্পর্কে বেশ কয়েকটি অন্যান্য পয়েন্ট রয়েছে যা আপনি এই পৃষ্ঠায় নীচে স্ক্রোল করে দেখতে পাবেন।

Itতিহাসিক তথ্য অনুসরণ করে, যারা এটি শিক্ষাগত মনে করতে পারেন।

এর আগে মাইক্রোসফ্ট কমান্ড ইন্টারপ্রেটারে সেই বৈশিষ্ট্যটি যুক্ত করার আগে && সিনট্যাক্সটি শেল রিপ্লেসমেন্ট 4 ডিওএসের একটি বৈশিষ্ট্য ছিল।

উইন্ডোজ 95, 98 এবং এমইতে আপনি এর পরিবর্তে পাইপ চরিত্রটি ব্যবহার করবেন:

dir | echo foo

এমএস-ডস ৫.০ এবং তারপরে, কমান্ড ইন্টারপ্রেটারের পূর্ববর্তী কয়েকটি উইন্ডোজ এবং এনটি সংস্করণের মাধ্যমে, (অননুমোদিত) কমান্ড বিভাজকটি চরিত্র 20 (Ctrl + T) ছিল যা আমি এখানে ^ T দিয়ে উপস্থাপন করব।

dir ^T echo foo

26
কমপক্ষে নিচে এনটি 4
জোয়

17
উইন 8.0 এবং 8.1 তেও কাজ করে।
এমেমার্ক

5
@ ফ্যালেনেরেপার, এটি সরাসরি cmdপ্রম্পটেও কাজ করে , তাই আমি মনে করি এটি প্রবেশ করা কোনও খারাপ অভ্যাস নয়। :)

6
@ ফ্যালেনেরেপ্টার নিশ্চিত হয়ে নিন যে আপনি দুজনের মধ্যে ব্যবহারিক পার্থক্য সম্পর্কে অবগত আছেন: নীচে রায়হানের উত্তর দেখুন।
মোশে কাটজ

8
আগে পেয়েছিলাম. A&&B, B কেবলমাত্র A সফল হলে চালিত হবে, যখন A এবং B A এর পরে B চালাবে, এ এর ​​ফলাফল যাই হোক না কেন।
শীর্ষস্থানীয়দের

578

ডকুমেন্টেশন থেকে একটি উদ্ধৃতি:

একাধিক কমান্ড এবং শর্তাধীন প্রক্রিয়াজাতকরণ প্রতীক ব্যবহার

আপনি শর্তাধীন প্রক্রিয়াজাতকরণ চিহ্ন ব্যবহার করে একটি একক কমান্ড লাইন বা স্ক্রিপ্ট থেকে একাধিক কমান্ড চালাতে পারেন। আপনি শর্তাধীন প্রক্রিয়াজাতকরণ প্রতীক সহ একাধিক কমান্ড চালনা করার পরে শর্তসাপেক্ষ প্রসেসিং প্রতীকের বাম দিকে কমান্ডের ফলাফলের উপর ভিত্তি করে শর্তাধীন প্রক্রিয়াজাতকরণ প্রতীকটির ডানদিকে কমান্ডগুলি কাজ করে।

উদাহরণস্বরূপ, আপনি পূর্ববর্তী কমান্ড ব্যর্থ হলে কেবল একটি কমান্ড চালাতে চাইতে পারেন। অথবা, আপনি পূর্ববর্তী কমান্ডটি সফল হলে কেবল একটি কমান্ড চালাতে চাইতে পারেন।

আপনি একাধিক কমান্ডগুলি পাস করতে নিম্নলিখিত টেবিলের তালিকাভুক্ত বিশেষ অক্ষরগুলি ব্যবহার করতে পারেন।

  • & [...]
    command1 & command2
    এক কমান্ড লাইনে একাধিক কমান্ড পৃথক করতে ব্যবহার করুন। Cmd.exe প্রথম কমান্ড চালায় এবং তারপরে দ্বিতীয় কমান্ডটি ব্যবহার করে।

  • && [...]
    command1 && command2
    কমান্ড অনুসরণ করে && চালনার জন্য কেবলমাত্র প্রতীকের পূর্ববর্তী কমান্ডটি সফল হলে ব্যবহার করুন। Cmd.exe প্রথম কমান্ড চালায় এবং তারপরে দ্বিতীয় কমান্ডটি চালিত হয় যদি প্রথম কমান্ড সফলভাবে সম্পন্ন হয়।

  • || [...]
    command1 || command2
    নিম্নলিখিত কমান্ড চালানোর জন্য ব্যবহার করুন || কমান্ড পূর্ববর্তী হলেই || ব্যর্থ। Cmd.exe প্রথম কমান্ডটি চালায় এবং তারপরে দ্বিতীয় কমান্ডটি কেবল তখনই চালিত হয় যদি প্রথম কমান্ড সফলভাবে সম্পন্ন হয় না (শূন্যের চেয়ে বড় ত্রুটি কোড পায়)।

  • ( ) [...]
    (command1 & command2)
    গ্রুপ বা নেস্ট একাধিক কমান্ড ব্যবহার করুন।

  • ; or ,
    command1 parameter1;parameter2
    পৃথক কমান্ড পরামিতি ব্যবহার করুন।


41
ব্যবহার করে দেখুন cmd /c "echo foo & echo bar"
রায়হান

2
vagrant up && vagrant sshউইন্ডোজ 10
ফুরমান

ধন্যবাদ! আমি সিজ সম্পর্কে জানতাম না &- এটি অবিচ্ছিন্ন করে তোলে এবং উভয় সমান্তরালে চালিত করি। আমি আটকে ছিলাম কারণ আমি ব্যবহার করছি &&সিঙ্ক্রোনাস এবং কেবল তখনই চালিয়ে যায় যদি প্রথম সফল হয়!
তেত্রদেব

1
ডকুমেন্টেশন লিঙ্কটি ভাগ, নতুন অবস্থানে technet.microsoft.com/en-us/library/bb490954.aspx
nkef

7
@ তেত্রাদেভ &কমান্ডগুলিকে অ্যাসিনক্রোনাস বা সমান্তরাল করে না। command1 & command2শেষ হয়ে command2 গেলে চলবে command1। এর সাফল্য বা ব্যর্থতা command1অপ্রাসঙ্গিক।
bornfromanegg

74

&জন্য ব্যাশ সমতূল্য ;(রান কমান্ড) এবং &&এর ব্যাশ সমতূল্য &&(রান কমান্ড শুধুমাত্র যখন পূর্ববর্তী একটি ত্রুটি সৃষ্ট হয় না)।


1
এটি সিএসএস, টিসিএসএস এবং আরও অনেক শেলের ক্ষেত্রেও সত্য। আমি ;লিনাক্সে এর আগে কখনও দেখিনি
ফুকলভ

10
@ LưuVĩnhPhúc এস-স্টাইলের শেলগুলিতে, এর ;অর্থ প্রথম কমান্ড চালানো, এটি শেষ হওয়ার জন্য অপেক্ষা করুন, এবং দ্বিতীয় কমান্ডটি চালান। &এর অর্থ প্রথম কমান্ড চালানো, পটভূমিতে রাখা এবং দ্বিতীয় কমান্ড চালানো। সুতরাং উভয় প্রোগ্রাম একযোগে চালু হয়। মনে রাখবেন যে এগুলি চিহ্নকে একত্রিত করছে না, তারা প্রথম কমান্ডের প্রতীকগুলি অনুসরণ করছে; progname &দ্বিতীয় কমান্ড না রেখে আপনি পটভূমিতে একটি একক কমান্ড চালু করতে পারেন ।
এমএম

25

আপনি একের পর এক কমান্ড চালাতে & ব্যবহার করতে পারেন। উদাহরণ:c:\dir & vim myFile.txt


19

আপনি যদি কোনও সেন্টিমিডি শর্টকাট তৈরি করতে চান (উদাহরণস্বরূপ আপনার ডেস্কটপে) যুক্ত করুন / কে প্যারামিটার (/ কে মানে রাখুন, / সি উইন্ডোটি বন্ধ করবে):

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

16

খুব শীঘ্রই মূল্যায়ন করা পরিবেশের ভেরিয়েবলগুলির সমস্যাটি কাটিয়ে উঠতে আপনি কলটি ব্যবহার করতে পারেন - যেমন

set A=Hello & call echo %A%

1
এটি কেবল তখনই কার্যকর হয় যখন ভেরিয়েবলটি ইতিমধ্যে সেট না করা থাকে, সেক্ষেত্রে echoপ্রিন্টগুলি পুরানো মানটি প্রিন্ট করে , নতুন মানটি নয়। কমপক্ষে, আমি এটি আমার উইন্ডোজ 7 বাক্সে পর্যবেক্ষণ করি।
ক্রেগ এম ব্র্যান্ডেনবুর্গ

ভেরিয়েবল সেট করা নেই তা নিশ্চিত করার জন্য আমি সেট এ = প্রথম ব্যবহার করি।
এসএসআই

1
একটি আরও ভাল পদ্ধতি হ'ল বিলম্বিত সম্প্রসারণ ( setlocal EnableDelayedExpansionস্ক্রিপ্টে বা cmd /v) ব্যবহার করা। উদাহরণস্বরূপ: timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
নিক

5
নতুন মান পেতে প্রথম শতাংশের পরে ^ ব্যবহার করুন: এ = হ্যালো এবং কল করুন প্রতিধ্বনি% ^ A% সেট করুন
নিকোলাস

9

বেশ কয়েকটি প্রক্রিয়া প্রতীক যখন একই লাইনে বিভিন্ন কমান্ড চলমান ব্যবহার করা যেতে পারে এবং কিছু কিছু ক্ষেত্রে ফেরৎ প্রক্রিয়া, অন্যান্য ক্ষেত্রে আউটপুট পরিবর্তনের হয়ে উঠতে পারে, বা শুধু ব্যর্থ হয়। একটি গুরুত্বপূর্ণ কেস একই লাইন কমান্ডগুলিতে স্থাপন করা যা ভেরিয়েবলগুলি হেরফের করে।

@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

প্রদত্ত উদাহরণটি আমার পক্ষে কাজ করে নি তবে একটি নীচে করেছে:cmd /V:ON /c "set i=5 & set arg!i!=MyFile!i! & echo path!i!=%temp%\%arg!i!%"
স্যাটিউ করুন

8

cmd /c ipconfig /all & Output.txt

এই কমান্ডটি Output.txtএকক কমান্ডে কমান্ড প্রয়োগ করে ফাইলটি ওপেন করে


8

সুতরাং, আমি 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 ফাইলটিতে চলে এবং এর ফলাফলগুলি দেখায়, তারপরে একটি "চালিয়ে যেতে কোনও কী টিপুন ..." প্রম্পট প্রদর্শিত হয়, তারপরে একটি কী চাপলে কমান্ড প্রম্পট উইন্ডোটি বন্ধ হয়ে যায়।

PS অন্যদের জন্য যারা আগ্রহী হতে পারে তাদের জন্য, আপনি .dll ফাইলগুলিতে একটি dllfile সংযুক্তি যুক্ত করতে নিম্নলিখিত .reg ফাইল এন্ট্রিগুলি ব্যবহার করতে পারেন এবং তারপরে একটি 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"

অ্যাসেম্বলিটি নিবন্ধ করার জন্য আমার কাছে এখন একটি দুর্দান্ত রাইট-ক্লিক মেনু রয়েছে।



4

একই সাথে দুটি কমান্ড কার্যকর করতে, আপনাকে অবশ্যই দুটি কমান্ডের মধ্যে একটি & (অ্যাম্পারস্যান্ড) চিহ্ন রাখতে হবে। তাই ভালো:

color 0a & start chrome.exe

চিয়ার্স!


4

আমি একই উইন্ডোতে দুটি পিংস লাগানোর চেষ্টা করি এবং এটি একই লাইনের একটি ক্রমিক কমান্ড। প্রথমটি শেষ করে দ্বিতীয় কমান্ডটি চালান।

সমাধান ছিল একত্রিত করা start /b উইন্ডোজ 7 কমান্ড প্রম্পটে ।

যথারীতি শুরু করুন, ছাড়াই /b এবং পৃথক উইন্ডোতে লঞ্চ করুন।

একই লাইনে লঞ্চ করতে ব্যবহৃত কমান্ডটি হ'ল:

start /b command1 parameters & command2 parameters

যাইহোক, আপনি যদি আউটপুট বিশ্লেষণ করতে চান তবে আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি না। আমি লক্ষ্য করেছি আউটপুট কমান্ডের আউটপুট মধ্যে scramble হয়।


4

ভাল, আপনার কাছে দুটি বিকল্প রয়েছে: পাইপিং বা কেবল &:

DIR /S & START FILE.TXT

অথবা,

tasklist | find "notepad.exe"

পাইপিং ( |) একটি কমান্ডের আউটপুট নেওয়ার জন্য এবং অন্যটিতে রাখার জন্য আরও বেশি। এবং ( &) কেবল বলছে এটি চালান, এবং এটি।


কী &এবং |কী করবে এবং সেগুলি কীভাবে পৃথক হয় তার কিছু ব্যাখ্যা অন্তর্ভুক্ত করার জন্য আপনি কি আপনার পোস্টটি সম্পাদনা করতে পারেন? এই মুহূর্তে এই ধারণাগুলির সাথে অপরিচিত লোকেরা তাদের ক্ষেত্রে কোনটি ব্যবহার করা উচিত তা সিদ্ধান্ত নিতে অক্ষম।
মিরেক ডুগোস্জ

আমি ছিল. আমার খারাপ। আমি সঙ্গে সঙ্গে পোস্ট সম্পাদনা করব। সন্তুষ্ট.
পাইডেভার

স্রেফ "ফাইন্ড" এর পরিবর্তে "ফাইন্ডস্টার" হওয়া উচিত
আনু শিবিন জোসেফ রাজ

2

না, cd / && tree && echo %time% ,। প্রতিবেদনের সময়টি যখন প্রথম কমান্ডটি কার্যকর করা হয়।

পাইপিংয়ে কিছু সমস্যা আছে তবে যতক্ষণ না লোকেরা জানেন যে এটি কীভাবে কাজ করে তা ততক্ষণ তা সমালোচিত নয়।


1

আরও একটি উদাহরণ: উদাহরণস্বরূপ, যখন আমরা এটি ব্যবহার করি gulp বিল্ড সিস্টেমটি পরিবর্তে

gulp - ডিফল্ট> বিল্ড

gulp build - বিল্ড-ফোল্ডার তৈরি করুন

gulp watch - ফাইল-ঘড়ি শুরু করুন

gulp dist - ডিস্ট-ফোল্ডার তৈরি করুন

আমরা এক লাইনে এটি করতে পারি:

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

1

আপনি যখন এক লাইনে ভেরিয়েবলগুলি ব্যবহার বা পরিচালনা করার চেষ্টা করেন তখন তাদের বিষয়বস্তু থেকে সাবধান থাকুন! যেমন নীচের মত একটি পরিবর্তনশীল

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

আপনি যদি এটি হিসাবে ব্যবহার করেন তবে অনেকগুলি অনাহীন-সক্ষম সমস্যার কারণ হতে পারে %PATH%

  1. সমাপ্ত বন্ধনীগুলি আপনার গোষ্ঠী বিবৃতিটি সমাপ্ত করে
  2. ডাবল উদ্ধৃতি আপনাকে %PATH%প্রথম বন্ধনী সমস্যা হ্যান্ডেল করতে ব্যবহার করার অনুমতি দেয় না
  3. এবং একটি রেফারেন্সড ভেরিয়েবলের মতো কী থাকবে %USERPROFILE%?

2
উইন্ডোজ সিএমডিতে একটি লাইনে দুটি কমান্ড চালানোর সাথে এর কী আছে?
পিটার মর্টেনসেন


0

&এক লাইনে কমান্ড ব্যবহার করতে উইন্ডোতে প্রতীক ব্যবহার করুন

C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook

আমরা যেমন লিনাক্স ব্যবহার করি,

touch thisfile ; ls -lstrh

-2

এটি সহজ: কেবল &&লক্ষণগুলি দিয়ে তাদের আলাদা করুন । উদাহরণ:

echo "Hello World" && echo "GoodBye World".

"হ্যালো ওয়ার্ল্ড" পরে "বিদায় ওয়ার্ল্ড" মুদ্রিত হবে।


6
সত্য হিসাবে স্বতন্ত্র, যে ইতিমধ্যে পুরানো উত্তরগুলি একই দেখায়, এটি এখনও বেশ সঠিক নয়। &&একটি হয় শর্তসাপেক্ষ অপারেটর, পরবর্তী কমান্ড শুধুমাত্র মৃত্যুদন্ড কার্যকর করা হয় যখন প্রথম কমান্ড succeded (errorlevel = 0)
Jeb

অবশ্যই. এটি স্পষ্টতই স্পষ্ট হয় যে ব্যক্তি যদি দুটি আদেশ চালাতে চায় তবে সে দুটিই সঠিক হবে এবং এভাবে সবকিছু ঠিকঠাক হবে
রাজন ধানোভা

1
রাজন: তার অর্থ "প্রথম কমান্ড সফল হলে কেবল পরবর্তী কমান্ড কার্যকর করা হবে" means
ইভান

2
" বিদায় ওয়ার্ল্ড হ্যালো ওয়ার্ল্ডের পরে মুদ্রণ করা হবে " সরবরাহিত মুদ্রণ Hello Worldব্যর্থ হয়নি। যেমন @ জেব বলেছেন, &&শর্তযুক্ত। &পূর্ববর্তী সফল ছিল কিনা তা নির্বিশেষে কমান্ড চালায়।
প্রণব এ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.