উইন্ডোজ কমান্ড লাইনে একটি উপকরণ কীভাবে সেট করবেন?


66

আমি ব্যাশে কাজ করতাম এবং ওরফে থেকে অনেক উপকার করতাম। উইন্ডোজ কমান্ড লাইনে কোন সমতুল্য উপায় আছে?

আমি একটি লিনাক্স পরিবেশের অনুকরণ করতে চাই না, তাই সাইগউইন কোনও পছন্দ নয়। আমার কিছু খুব দীর্ঘ কমান্ডের জন্য কিছু শর্টকাট দরকার, যেমন cd a_very_long_path


5
আপনি ব্যবহার করবেন doskey(নামটি দিয়ে বোকা বানাবেন না এটি পুরানো এমএস ডস ডসকি নয়)। doskey /?আরও তথ্যের জন্য ব্যবহার করুন। তা ছাড়া, আমি ভীত, এই প্রশ্নটি এখানে বিষয়বস্তু।
খ্রিস্টান.কে

এর সম্ভাব্য সদৃশটি কি উইন্ডোজ কমান্ড প্রম্পটে বর্তমান অবস্থান থেকে ডিফল্ট ডিরেক্টরিতে পথ পরিবর্তন করার একটি আদেশ আছে? বিশেষত, কমান্ড প্রম্পটটি খোলার সময় আপনি কীভাবে আপনার ডস ম্যাক্রোকে স্বয়ংক্রিয়ভাবে লোড করতে পারেন তা জানতে আমার উত্তর দেখুন ।
করণ

এর সাথে সম্পর্কিত + + স্থায়ী doskey বানানোর এটা এক উপায় superuser.com/questions/49170/...
laggingreflex

উত্তর:


61

খ্রিস্টান.কে. যেমন তার মন্তব্যে বলেছিলেন, ডসকি কমান্ডটি ম্যাক্রো সংজ্ঞায়িত করতে ব্যবহার করা যেতে পারে, যা এলিয়াসগুলির সাথে সাদৃশ্যপূর্ণ।

doskey macroName=macroDefinition

ম্যাক্রো প্যারামিটারগুলি $পূর্বনির্ধারিত অবস্থানগুলির মাধ্যমে সংজ্ঞায় রেফারেন্স করা হয় : $1মাধ্যমে $9এবং $*সকলের জন্য।

আরও তথ্যের জন্য ডসকি টেকনেট ডকুমেন্টেশন দেখুন বা টাইপ করুন doskey /?বা help doskeyকমান্ড লাইন থেকে।

তবে ডস্কি ম্যাক্রোগুলির সাথে মারাত্মক সীমাবদ্ধতা রয়েছে:

  • ম্যাক্রোগুলি কেবল ইন্টারেক্টিভ কমান্ড লাইনেই কাজ করে - তারা কোনও ব্যাচের স্ক্রিপ্টের মধ্যে কাজ করে না।
  • তারা একটি পাইপ উভয় দিকে ব্যবহার করা যাবে না: উভয় someMacro|findstr '^'এবং dir|someMacroব্যর্থ হয়।
  • এগুলি একটি ফর / এফ কমান্ডের মধ্যে ব্যবহার করা যায় না: for /f %A in ('someMacro') do ...ব্যর্থ হয়

সীমাবদ্ধতা এত মারাত্মক যে আমি খুব কমই ডস্কি ম্যাক্রোগুলি ব্যবহার করি।

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

আপনি দীর্ঘ এবং বহুল ব্যবহৃত ব্যবহৃত কমান্ডের জন্য সাধারণ পরিবর্তনশীল "ম্যাক্রোগুলি" তৈরি করতে পারেন, তবে সিনট্যাক্সটি টাইপ করা কিছুটা বিশ্রী কারণ আপনি যখন এটি ব্যবহার করতে চান তখন আপনাকে "ম্যাক্রো" প্রসারিত করতে হবে।

সংজ্ঞা:

set "cdMe=cd a_very_long_path"

ব্যবহার (কমান্ড লাইন বা স্ক্রিপ্ট থেকে)

%cdMe%

ধন্যবাদ, তাহলে কি ব্যাচের স্ক্রিপ্টের মধ্যে কাজ করার কোনও উপায় আছে?
স্টারপিংকার

@ জারমাইনএক্সু - ডসকি ম্যাক্রোগুলির সাথে কোনও উপায় নেই। অশোধিত বিকল্পের জন্য আমার আপডেট হওয়া উত্তরটি দেখুন।
dbenham

2
দ্বিতীয় সমাধানের পক্ষে হ'ল পাইপিং কাজ করবে। আপনি পাইপিংয়ে ম্যাক্রোটি ব্যবহার করতে চাইলে ডসকিযুক্ত প্রথম সমাধানটি কাজ করবে না।
সিইও অ্যাপার্টমেন্টিকো

? আমি কীভাবে এই ম্যাক্রোগুলিকে উইন + আর বক্সে (রান ডায়ালগ) দৃশ্যমান রাখতে পারি
ZEE

@ আকার - আপনি পারবেন না। ডসকি ম্যাক্রোগুলিকে অবশ্যই শারীরিকভাবে একটি কনসোল উইন্ডোতে সীমাবদ্ধ করা উচিত যা cmd.exe চলছে।
dbenham

15

আপনি একটি ব্যাচের স্ক্রিপ্ট তৈরি করতে পারেন এবং এটি আপনার পথে সংরক্ষণ করতে পারেন।

লিনাক্সে আপনি একটি স্ক্রিপ্ট তৈরি ~/binকরে উইন্ডোজের ফোল্ডারে যুক্ত করতে পারেন যা আপনি একই করতে পারেন।

যোগ %USERPROFILE%\binআপনার টু PATHএনভায়রনমেন্ট ভেরিয়েবল। তারপরে সেখানে আপনার স্ক্রিপ্টগুলি সংরক্ষণ করুন।

quickcd.cmd

@echo off
cd /d a_very_long_path

এখন আপনি quickcdকমান্ড লাইনে টাইপ করতে পারেন ।

এটি callফাংশনটি ব্যবহার করে কোনও স্ক্রিপ্টের অভ্যন্তরেও বলা যেতে পারে

call quickcd

এটি কাজ করে না - ব্যাচ ফাইলের মধ্যে ডিরেক্টরি সেট করা কেবল ব্যাচ ফাইলকেই প্রভাবিত করে। ব্যাচ ফাইলটি প্রস্থান করলে পথটি ফিরে যায়।
শ্যাডো

1
এটা আমার জন্য কাজ করছে। Microsoft Windows [Version 10.0.17134.648]
উইলিয়াম বেটরিজ-র‌্যাডফোর্ড

সত্যিই অদ্ভুত। সুতরাং আপনি যদি উপরের উদাহরণটিকে অনুলিপি করে আটকান (ডিরেক্টরিটি বিদ্যমান যা একটিতে পরিবর্তন করা) এটি আপনার জন্য কাজ করে?
শ্যাডো

আপনার ফোল্ডারটি কি অন্য ড্রাইভে আছে? আপনার /dপতাকাটি যুক্ত করতে হতে পারেCD
উইলিয়াম বেটরিজ-র‌্যাডফোর্ড

13

subst

আপনি যদি সত্যিই এরকম কিছু পাওয়ার চেষ্টা করছেন:

C:> cd \users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

substপৃথক ড্রাইভ চিঠির দীর্ঘ পথটি ম্যাপ করতে আপনি কমান্ডটি ব্যবহার করতে পারেন

subst m: c:\users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

তারপরে, আপনি যখন সেই ফোল্ডারে ঝাঁপিয়ে পড়তে চান, আপনি কেবল m:কমান্ড লাইনে টাইপ করতে পারেন ।

এই ওভারের সুবিধাটি doskeyহ'ল এটি সমস্ত ব্যাচ প্রোগ্রামগুলিতে কাজ করে এবং উইন্ডোজের মধ্যে যে কোনও ফাইল ডায়ালগ বাক্সে প্রদর্শিত হয়।

আপনি যদি আর ম্যাপিং না চান:

subst m: /D

3
আমি এটিও পছন্দ করি তবে এটি ড্রাইভের চিঠিগুলি খায়।
ggb667

8

উইন্ডোগুলি যেভাবে ব্যবহার করে আপনি একই কৌশলটি ব্যবহার করতে পারেন: একটি পরিবেশ-পরিবর্তনশীল (বা একটি ব্যাচ-প্রসঙ্গে কেবল একটি ভেরিয়েবল) সেট করুন উদাহরণস্বরূপ পরিবেশ-পরিবর্তনশীল% উইন্ডির% (এবং কিছু অন্যান্য) রয়েছে তাই আপনি এটি করতে পারেন

cd C:\Windows\

অথবা

cd %windir%

যা একই কাজ করে। সুতরাং, আপনাকে যা করতে হবে তা হল:

set "mydir=C:\very\long\path\to\my\data\"

এর পরে আপনি যা করতে পারেন (যেখান থেকে আপনি):

dir %mydir%

অথবা

cd %mydir%

অথবা আপনি যা চান


1
এটাই টিকিট @ স্টেফান!
jbchurchill

3

লিনাক্সের বিপরীতে, উইন্ডোজ এলিয়াসগুলি আর্গুমেন্ট নিতে পারে এবং তাদের সংজ্ঞা অনুসারে এই যুক্তিগুলি নির্ধারণের জন্য প্যারামিটার দেওয়া যেতে পারে।

অভ্যন্তরীণ অন্তর্নির্মিত কমান্ডটি ডসকি , এর অর্থ এটি কোনও বাহ্যিক এক্সিকিউটেবল ফাইল %SystemRoot%\System32নয় cmd.exeযা এটি নিজেই অবস্থিত %SystemRoot%বা এটি %Windir%উভয়ই C:\Windowsডিফল্টরূপে ফোল্ডারে নির্দেশ করছে is

ডসকি অন্যান্য অনেক কিছুর মধ্যেই উপাধি সংজ্ঞা দেয়। উইন্ডোজ পরিভাষায়, এলিয়াসগুলিকে ম্যাক্রোস বলা হয়। একটি উপনাম সেট করতে আপনি ব্যবহার করেন

doskey alias=command $1 $2 ... $9 or $* (to catch them all) 

এখানে $1প্রথম যুক্তি দেখায়, এবং $*সমস্ত আর্গুমেন্টকে নির্দেশ করে।

আমি সর্বদা ব্যবহার করতাম $*এবং ডাবল উদ্ধৃতি থাকি $1যদি স্পেসগুলি বাদ দেওয়ার জন্য কেবল একটি যুক্তি থাকে যা বিশেষ চরিত্র হিসাবে বিবেচিত হয়, যেমন বিভাজক (কমান্ডের জন্য)।

তদুপরি, আপনি পৃথক ফাইলে আপনার এলিয়াস ম্যাক্রো সংজ্ঞায়িত করতে পারেন , বলুন LinuxAliases.macroএবং তারপরে এটি ব্যবহার করে উত্স করুন

doskey /macrofile=LinuxAliases.macro

এটি কেবলমাত্র বর্তমান অধিবেশনের জন্য ফাইলের অভ্যন্তরে সংজ্ঞায়িত সমস্ত উপকরণগুলি লোড করবে , এর অর্থ যখন আপনি প্রক্রিয়াটি exitবাইরে চলে যান cmd.exe( শেল এবং কমান্ড প্রম্পট হিসাবে পরিচিত ), তারা চলে যায়।

স্থায়ী পরিচয় রাখার জন্য আপনি অটোআরুন বা অটোকমন্ড বা অনুরূপ কিছু বলা একটি রিজেড কিতে কোথাও পুরো কমান্ডটি টাইপ করতে পারেন, ম্যাক্রো ফাইলের অভ্যন্তরীণ সিনট্যাক্সের পাশাপাশি এখন যা আমি মনে করতে পারি না: পি


কমান্ডের জন্য এখানে অফিসিয়াল এবং আরও ভাল ডকুমেন্টেশন রয়েছে।


1

ডিরেক্টরিটি পরিবর্তন করার জন্য আমি এর মতো একটি "উলাম" তৈরি করেছি। মূলত আমি একটি ফাইল তৈরি করেছি fav.batএবং এটি একটি প্যাথের ফোল্ডারে রেখেছি (যেমন সি: \ মাই ব্যাচস):

@setlocal
@echo off
set userChoice=%1
rem The format is:
rem call :condition SHORTCUT FOLDER
call :condition web c:\Git\SecThor\SecWeb\App\
call :condition cloud c:\Git\SecThor\SecCloud\dojo.backend\
call :condition good c:\Users\Vitaly\Dropbox\Projects\goodread-friends\
endlocal
popd
GOTO :eof

:condition
rem We do PUSHD twice since endlocal does popd once :|
if "%userChoice%"=="%1" pushd %2 & pushd %2 & echo pushd %2
if "%userChoice%"=="" echo %1 =^> %2
GOTO :eof

তারপরে আমি খুব দ্রুত যে কোনও পূর্বনির্ধারিত ফোল্ডারে যেতে পারি। আমি এখানে এই কৌশল সম্পর্কে একটি সম্পূর্ণ নিবন্ধ লিখেছিলাম ।


0

ধরে নিচ্ছি আপনি একই ড্রাইভে রয়েছেন, অর্থাত্ D:তখন আর cd D:\somedir\দরকার নেই।

আমার ক্ষেত্রে, সি: সিস্টেম ফাইলগুলি ধারণ করে, তবে সমস্ত কাজ ডি তে চলছে :

2 অংশ। প্রথমে একটি ব্যাচ ফাইল ব্যবহার করে কিছু কার্যনির্বাহী ডিরেক্টরি সেট করুন।

আসুন লোকাল প্রোফাইলে সিএমডি বলি । আপনার এগুলির একাধিক থাকতে পারে, প্রয়োজন অনুযায়ী এগুলি চালান।

set wd1=D:\home\work\fb440.dumper
set wd2=D:\home\work\py\tests

আপনি সুনির্দিষ্টভাবে তৈরি করেছেন এমন পরিবেশের ভেরিয়েবলের উপর ভিত্তি করে এখন অন্য কমান্ড ফাইলটি ঘুরে দেখার জন্য ব্যবহার করুন।

wd.cmd

echo off
d:
if %1.==. set | findstr wd
if %1==1 cd %wd1%
if %1==2 cd %wd2%
if %1==3 cd %wd3%
if %1==4 cd %wd4%
if %1==5 cd %wd5%
if %1==6 cd %wd6%

এবং কিছুটা নমুনা ব্যবহার:

D:\home\bin>wd 2

D:\home\bin>echo off
D:\home\work\py\tests>wd 1

D:\home\work\py\tests>echo off

wd নিজে থেকেই আমাকে বুকমার্কড ডিরেক্টরিগুলির তালিকা প্রদর্শন করার কথা রয়েছে। এটি কাজ করে, তবে কেন আমি এই "অপ্রত্যাশিত সিডি" বার্তা পাচ্ছি তা নিশ্চিত নয়।

D:\home\work\fb440.dumper>wd

D:\home\work\fb440.dumper>echo off
wd1=D:\home\work\fb440.dumper
wd2=D:\home\work\py\tests
cd was unexpected at this time.

D:\home\work\fb440.dumper> 

নিয়মিত। সিএমডি ব্যাচ

ডিরেক্টরি নেভিগেশন বাদে , আপনি আপনার PATH- এ কোথাও একটি foo.cmd তৈরি করতে পারেন এবং এটি একটি উপাধিকার মতো কাজ করতে পারে। মনে রাখবেন, লিনাক্স / ওএসএক্স শেলগুলির বিপরীতে, সিএমডি ফাইলগুলি উত্সের প্রয়োজন ছাড়াই পরিবেশের ভেরিয়েবল এবং সেশনকে প্রভাবিত করতে পারে ।

আমার নেভিগেট করার জন্য আমার কাছে একটি সিডিবিন.কমডি আছে, উদাহরণস্বরূপ:

d:
cd \home\bin

এবং এটি সিউডো- গ্রেপ গ্রেপ.cmd

findstr -n %1 %2

ক্রিয়ায় (যাই হোক না কেন সাজান / + 2 / + 10 মানে)

D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10

dumper2.py:18:class PrettySafeLoader(yaml.SafeLoader):            
dumper2.py:27:class Comparator(object):                           
dumper2.py:3:class module_settings:                               
linker2.py:5:class module_settings:                               
dumper2.py:65:class DataCompProcessor(object):                    
dumper2.py:69:class DataCompTextRenderer(DataCompProcessor):      
dumper2.py:76:class DataComparator(object):                       

0

আপনি ডসকি.এক্সি ব্যবহার করতে পারেন , এখানে একটি উদাহরণ রয়েছে:

doskey qcd=cd [pathname]

এবং এখন আপনি যদি টাইপ করেন qcdতবে এটি সেই পথে সিডি হবে ।

এখানে ডসকি ম্যাক্রোর সাথে কিছু সহায়তা রয়েছে :

doskey [macroname]=[command]

এটি সহজতম রূপ, এখানে একটি উদাহরণ:

doskey word=echo This is a really, really long sentence.

এবং আপনি যদি wordআউটপুট টাইপ করেন তা হ'ল:

এটি একটি সত্য, সত্যিই দীর্ঘ বাক্য।

প্যারামিটারগুলির জন্য আপনি $ 1- $ 9 ব্যবহার করতে পারেন, এখানে একটি উদাহরণ রয়েছে:

doskey npd=notepad $1

আর যদি আপনি টাইপ npdএটা খুলবে নোটপ্যাড কিন্তু যদি আমরা টাইপ npd test.txtএটা খুলবে test.txt মধ্যে নোটপ্যাড

আপনি সমস্ত পরামিতিগুলির জন্য $ * ব্যবহার করতে পারেন, এখানে আরও একটি উদাহরণ রয়েছে:

doskey prt=echo $*

এবং আপনি যদি টাইপ করেন prt This is short.তবে আউটপুটটি হবে:

এটি সংক্ষিপ্ত।

আপনি একাধিক কমান্ডের জন্য $ T ব্যবহার করতে পারেন, এখানে একটি উদাহরণ রয়েছে:

doskey newline=echo $1 $T echo $2

এবং আপনি যদি টাইপ করেন newline Hello andতবে আউটপুটটি হবে:

হ্যালো

এবং

আমি আশা করি তুমি বুঝতে পেরেছ.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.