উত্তর:
2000 সালের পর থেকে সমস্ত মাইক্রোসফ্ট ওএসে এটি পছন্দ করুন এবং আজও ভাল:
dir & echo foo
আপনি যদি দ্বিতীয় কমান্ডটি কার্যকর করতে চান তবে প্রথমটি সফলভাবে উপস্থিত থাকলে:
dir && echo foo
এক লাইনে একাধিক কমান্ড কার্যকর করার জন্য একক অ্যাম্পারস্যান্ড (&) সিনট্যাক্সটি উইন্ডোজ এক্সপি, উইন্ডোজ 2000 এবং কিছু পূর্ববর্তী এনটি সংস্করণে ফিরে যায়। (কমপক্ষে ৪.০, এখানে একজন মন্তব্যকারী অনুসারে।)
এটি সম্পর্কে বেশ কয়েকটি অন্যান্য পয়েন্ট রয়েছে যা আপনি এই পৃষ্ঠায় নীচে স্ক্রোল করে দেখতে পাবেন।
Itতিহাসিক তথ্য অনুসরণ করে, যারা এটি শিক্ষাগত মনে করতে পারেন।
এর আগে মাইক্রোসফ্ট কমান্ড ইন্টারপ্রেটারে সেই বৈশিষ্ট্যটি যুক্ত করার আগে && সিনট্যাক্সটি শেল রিপ্লেসমেন্ট 4 ডিওএসের একটি বৈশিষ্ট্য ছিল।
উইন্ডোজ 95, 98 এবং এমইতে আপনি এর পরিবর্তে পাইপ চরিত্রটি ব্যবহার করবেন:
dir | echo foo
এমএস-ডস ৫.০ এবং তারপরে, কমান্ড ইন্টারপ্রেটারের পূর্ববর্তী কয়েকটি উইন্ডোজ এবং এনটি সংস্করণের মাধ্যমে, (অননুমোদিত) কমান্ড বিভাজকটি চরিত্র 20 (Ctrl + T) ছিল যা আমি এখানে ^ T দিয়ে উপস্থাপন করব।
dir ^T echo foo
cmd
প্রম্পটেও কাজ করে , তাই আমি মনে করি এটি প্রবেশ করা কোনও খারাপ অভ্যাস নয়। :)
ডকুমেন্টেশন থেকে একটি উদ্ধৃতি:
একাধিক কমান্ড এবং শর্তাধীন প্রক্রিয়াজাতকরণ প্রতীক ব্যবহার
আপনি শর্তাধীন প্রক্রিয়াজাতকরণ চিহ্ন ব্যবহার করে একটি একক কমান্ড লাইন বা স্ক্রিপ্ট থেকে একাধিক কমান্ড চালাতে পারেন। আপনি শর্তাধীন প্রক্রিয়াজাতকরণ প্রতীক সহ একাধিক কমান্ড চালনা করার পরে শর্তসাপেক্ষ প্রসেসিং প্রতীকের বাম দিকে কমান্ডের ফলাফলের উপর ভিত্তি করে শর্তাধীন প্রক্রিয়াজাতকরণ প্রতীকটির ডানদিকে কমান্ডগুলি কাজ করে।
উদাহরণস্বরূপ, আপনি পূর্ববর্তী কমান্ড ব্যর্থ হলে কেবল একটি কমান্ড চালাতে চাইতে পারেন। অথবা, আপনি পূর্ববর্তী কমান্ডটি সফল হলে কেবল একটি কমান্ড চালাতে চাইতে পারেন।
আপনি একাধিক কমান্ডগুলি পাস করতে নিম্নলিখিত টেবিলের তালিকাভুক্ত বিশেষ অক্ষরগুলি ব্যবহার করতে পারেন।
& [...]
command1 & command2
এক কমান্ড লাইনে একাধিক কমান্ড পৃথক করতে ব্যবহার করুন। Cmd.exe প্রথম কমান্ড চালায় এবং তারপরে দ্বিতীয় কমান্ডটি ব্যবহার করে।
&& [...]
command1 && command2
কমান্ড অনুসরণ করে && চালনার জন্য কেবলমাত্র প্রতীকের পূর্ববর্তী কমান্ডটি সফল হলে ব্যবহার করুন। Cmd.exe প্রথম কমান্ড চালায় এবং তারপরে দ্বিতীয় কমান্ডটি চালিত হয় যদি প্রথম কমান্ড সফলভাবে সম্পন্ন হয়।
|| [...]
command1 || command2
নিম্নলিখিত কমান্ড চালানোর জন্য ব্যবহার করুন || কমান্ড পূর্ববর্তী হলেই || ব্যর্থ। Cmd.exe প্রথম কমান্ডটি চালায় এবং তারপরে দ্বিতীয় কমান্ডটি কেবল তখনই চালিত হয় যদি প্রথম কমান্ড সফলভাবে সম্পন্ন হয় না (শূন্যের চেয়ে বড় ত্রুটি কোড পায়)।
( ) [...]
(command1 & command2)
গ্রুপ বা নেস্ট একাধিক কমান্ড ব্যবহার করুন।
; or ,
command1 parameter1;parameter2
পৃথক কমান্ড পরামিতি ব্যবহার করুন।
cmd /c "echo foo & echo bar"
।
vagrant up && vagrant ssh
উইন্ডোজ 10
&
- এটি অবিচ্ছিন্ন করে তোলে এবং উভয় সমান্তরালে চালিত করি। আমি আটকে ছিলাম কারণ আমি ব্যবহার করছি &&
সিঙ্ক্রোনাস এবং কেবল তখনই চালিয়ে যায় যদি প্রথম সফল হয়!
&
কমান্ডগুলিকে অ্যাসিনক্রোনাস বা সমান্তরাল করে না। command1 & command2
শেষ হয়ে command2
গেলে চলবে command1
। এর সাফল্য বা ব্যর্থতা command1
অপ্রাসঙ্গিক।
&
জন্য ব্যাশ সমতূল্য ;
(রান কমান্ড) এবং &&
এর ব্যাশ সমতূল্য &&
(রান কমান্ড শুধুমাত্র যখন পূর্ববর্তী একটি ত্রুটি সৃষ্ট হয় না)।
;
লিনাক্সে এর আগে কখনও দেখিনি
;
অর্থ প্রথম কমান্ড চালানো, এটি শেষ হওয়ার জন্য অপেক্ষা করুন, এবং দ্বিতীয় কমান্ডটি চালান। &
এর অর্থ প্রথম কমান্ড চালানো, পটভূমিতে রাখা এবং দ্বিতীয় কমান্ড চালানো। সুতরাং উভয় প্রোগ্রাম একযোগে চালু হয়। মনে রাখবেন যে এগুলি চিহ্নকে একত্রিত করছে না, তারা প্রথম কমান্ডের প্রতীকগুলি অনুসরণ করছে; progname &
দ্বিতীয় কমান্ড না রেখে আপনি পটভূমিতে একটি একক কমান্ড চালু করতে পারেন ।
আপনি একের পর এক কমান্ড চালাতে & ব্যবহার করতে পারেন। উদাহরণ:c:\dir & vim myFile.txt
আপনি যদি কোনও সেন্টিমিডি শর্টকাট তৈরি করতে চান (উদাহরণস্বরূপ আপনার ডেস্কটপে) যুক্ত করুন / কে প্যারামিটার (/ কে মানে রাখুন, / সি উইন্ডোটি বন্ধ করবে):
cmd /k echo hello && cd c:\ && cd Windows
খুব শীঘ্রই মূল্যায়ন করা পরিবেশের ভেরিয়েবলগুলির সমস্যাটি কাটিয়ে উঠতে আপনি কলটি ব্যবহার করতে পারেন - যেমন
set A=Hello & call echo %A%
echo
প্রিন্টগুলি পুরানো মানটি প্রিন্ট করে , নতুন মানটি নয়। কমপক্ষে, আমি এটি আমার উইন্ডোজ 7 বাক্সে পর্যবেক্ষণ করি।
setlocal EnableDelayedExpansion
স্ক্রিপ্টে বা cmd /v
) ব্যবহার করা। উদাহরণস্বরূপ: timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
।
বেশ কয়েকটি প্রক্রিয়া প্রতীক যখন একই লাইনে বিভিন্ন কমান্ড চলমান ব্যবহার করা যেতে পারে এবং কিছু কিছু ক্ষেত্রে ফেরৎ প্রক্রিয়া, অন্যান্য ক্ষেত্রে আউটপুট পরিবর্তনের হয়ে উঠতে পারে, বা শুধু ব্যর্থ হয়। একটি গুরুত্বপূর্ণ কেস একই লাইন কমান্ডগুলিতে স্থাপন করা যা ভেরিয়েবলগুলি হেরফের করে।
@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!%"
সুতরাং, আমি 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"
অ্যাসেম্বলিটি নিবন্ধ করার জন্য আমার কাছে এখন একটি দুর্দান্ত রাইট-ক্লিক মেনু রয়েছে।
আমি একই উইন্ডোতে দুটি পিংস লাগানোর চেষ্টা করি এবং এটি একই লাইনের একটি ক্রমিক কমান্ড। প্রথমটি শেষ করে দ্বিতীয় কমান্ডটি চালান।
সমাধান ছিল একত্রিত করা start /b
উইন্ডোজ 7 কমান্ড প্রম্পটে ।
যথারীতি শুরু করুন, ছাড়াই /b
এবং পৃথক উইন্ডোতে লঞ্চ করুন।
একই লাইনে লঞ্চ করতে ব্যবহৃত কমান্ডটি হ'ল:
start /b command1 parameters & command2 parameters
যাইহোক, আপনি যদি আউটপুট বিশ্লেষণ করতে চান তবে আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি না। আমি লক্ষ্য করেছি আউটপুট কমান্ডের আউটপুট মধ্যে scramble হয়।
ভাল, আপনার কাছে দুটি বিকল্প রয়েছে: পাইপিং বা কেবল &
:
DIR /S & START FILE.TXT
অথবা,
tasklist | find "notepad.exe"
পাইপিং ( |
) একটি কমান্ডের আউটপুট নেওয়ার জন্য এবং অন্যটিতে রাখার জন্য আরও বেশি। এবং ( &
) কেবল বলছে এটি চালান, এবং এটি।
&
এবং |
কী করবে এবং সেগুলি কীভাবে পৃথক হয় তার কিছু ব্যাখ্যা অন্তর্ভুক্ত করার জন্য আপনি কি আপনার পোস্টটি সম্পাদনা করতে পারেন? এই মুহূর্তে এই ধারণাগুলির সাথে অপরিচিত লোকেরা তাদের ক্ষেত্রে কোনটি ব্যবহার করা উচিত তা সিদ্ধান্ত নিতে অক্ষম।
না, cd / && tree && echo %time%
,। প্রতিবেদনের সময়টি যখন প্রথম কমান্ডটি কার্যকর করা হয়।
পাইপিংয়ে কিছু সমস্যা আছে তবে যতক্ষণ না লোকেরা জানেন যে এটি কীভাবে কাজ করে তা ততক্ষণ তা সমালোচিত নয়।
আরও একটি উদাহরণ: উদাহরণস্বরূপ, যখন আমরা এটি ব্যবহার করি gulp
বিল্ড সিস্টেমটি পরিবর্তে
gulp
- ডিফল্ট> বিল্ড
gulp build
- বিল্ড-ফোল্ডার তৈরি করুন
gulp watch
- ফাইল-ঘড়ি শুরু করুন
gulp dist
- ডিস্ট-ফোল্ডার তৈরি করুন
আমরা এক লাইনে এটি করতে পারি:
cd c:\xampp\htdocs\project & gulp & gulp watch
আপনি যখন এক লাইনে ভেরিয়েবলগুলি ব্যবহার বা পরিচালনা করার চেষ্টা করেন তখন তাদের বিষয়বস্তু থেকে সাবধান থাকুন! যেমন নীচের মত একটি পরিবর্তনশীল
PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
আপনি যদি এটি হিসাবে ব্যবহার করেন তবে অনেকগুলি অনাহীন-সক্ষম সমস্যার কারণ হতে পারে %PATH%
%PATH%
প্রথম বন্ধনী সমস্যা হ্যান্ডেল করতে ব্যবহার করার অনুমতি দেয় না%USERPROFILE%
?হ্যা এখানে. এটা &
।
&&
কমান্ড 1 সম্পূর্ণ করার পরে কমান্ড 2 কার্যকর করা হবে যখন এটি ব্যর্থ হয় নি didn't
&
নির্বিশেষে কার্যকর করা হবে।
&
এক লাইনে কমান্ড ব্যবহার করতে উইন্ডোতে প্রতীক ব্যবহার করুন
C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook
আমরা যেমন লিনাক্স ব্যবহার করি,
touch thisfile ; ls -lstrh
এটি সহজ: কেবল &&
লক্ষণগুলি দিয়ে তাদের আলাদা করুন । উদাহরণ:
echo "Hello World" && echo "GoodBye World".
"হ্যালো ওয়ার্ল্ড" পরে "বিদায় ওয়ার্ল্ড" মুদ্রিত হবে।
&&
একটি হয় শর্তসাপেক্ষ অপারেটর, পরবর্তী কমান্ড শুধুমাত্র মৃত্যুদন্ড কার্যকর করা হয় যখন প্রথম কমান্ড succeded (errorlevel = 0)
Hello World
ব্যর্থ হয়নি। যেমন @ জেব বলেছেন, &&
শর্তযুক্ত। &
পূর্ববর্তী সফল ছিল কিনা তা নির্বিশেষে কমান্ড চালায়।