ডেভিডপস্টিলের উত্তর দুর্দান্ত তবে নতুনদেরকে কিছুটা বিভ্রান্ত করতে পারে। আমি নতুন করে বলার চেষ্টা করব।
%
কোনও সংরক্ষিত চরিত্র নয়।
এটির সাথে একটি চরিত্র বিশেষ অর্থ থেকে কমান্ড শেল (ওরফে cmd.exe
এবং command.com
)
পার্থক্য হল:
- আপনি মোটেও সংরক্ষিত অক্ষর ব্যবহার করতে পারবেন না (তবে নীচে দেখুন)
- আপনি বিশেষ এবং পালানোর অক্ষরগুলি ব্যবহার করতে সক্ষম হতে পারেন - কেবল সেগুলি যেমন টাইপ করে নয়
অন্য কথায়, আপনি %
তাদের নামে থাকা একটি ফাইল বা ফোল্ডার তৈরি করতে পারেন । উইন্ডোজ এক্সপ্লোরার ব্যবহার করে আপনি এটি সরাসরি করতে পারেন কারণ %
সেখানে কোনও বিশেষ অর্থ নেই। কমান্ড প্রম্পটে আপনাকে এ জাতীয় ফাইল তৈরি করা থেকে বিরত রাখার কোনও উদ্দেশ্য ছিল না, তবে %
সেখানে একটি বিশেষ অর্থ থাকার কারণে, এই জাতীয় ফাইলগুলি তৈরি করার জন্য আপনাকে নীচে বর্ণিত সিনট্যাক্স ব্যবহার করতে হবে।
ব্যাট-ফাইল
আপনি যদি একটি ব্যাচ ফাইল (* .bat, * .Cmd) লিখছেন, যা কমান্ড শেল দ্বারা চালিত হয়ে যায় (কমান্ড প্রম্পট অ্যাপ্লিকেশন ওরফে) %
আক্ষরিকভাবে ব্যবহার করতে (যেমন %
নামের সাথে একটি ফাইল তৈরি করা , এবং বিকল্প না হিসাবে) %%
পরিবর্তে আপনার একটি পরিবর্তনশীল বা পরামিতি) টাইপ করতে হবে।
উদাহরণ স্বরূপ,
- কমান্ড
echo %windir%
আউটপুট উত্পাদন করে:c:\windows
- তবে কমান্ড
echo %%windir%%
আউটপুট উত্পাদন করে:%windir%
- এবং এইভাবে: কমান্ড
echo %%%%windir%%%%
আউটপুট উত্পাদন করে:%%windir%%
সুতরাং আপনি যদি নীচের লাইনটি হিসাবে সংরক্ষণ করেন test.bat
এবং চালনা করেন তবে এটি %test%
শতাংশের চিহ্ন সহ সম্পূর্ণ নামের একটি ডিরেক্টরি তৈরি করবে :
md %%test%%
যদি কোনও ভেরিয়েবলের নাম না দেওয়া থাকে তবে test
পরবর্তী কমান্ডটি শেষের সমান - এটি একটি ডিরেক্টরিও তৈরি করে %test%
:
md %test%
... তবে দয়া করে এটি কখনও করবেন না যেহেতু একবার আপনার নামের সাথে কোনও পরিবর্তনশীল তৈরি করার পরে আপনার আদেশটি আপনার পছন্দ মতো আচরণ করবে না
আপনি যদি for
একটি BAT- ফাইলটিতে কমান্ড ব্যবহার করতে চান তবে আপনাকে দ্বিগুণও করতে হবে %
যাতে for
কমান্ড শেলটি না দিয়ে কমান্ড দেওয়ার এটির বিশেষ অর্থ হতে পারে:
for %%i in (*.*) do echo %%i
এটি বর্তমান ডিরেক্টরিতে ফাইলগুলির একটি তালিকা তৈরি করবে ( %%i
এটির বিশেষ অর্থ রয়েছে) এবং পরবর্তী বিভাগে বর্ণিত ওয়ার্কআরাউন্ডকে %%i
অবলম্বন না করে কীভাবে এটি আক্ষরিক উত্পাদন করবেন তা আমি নিশ্চিত নই %p%
( %%%%i
এখানে কাজ করে না)।
%
কমান্ড প্রম্পটে বিশেষ অর্থ সহ একমাত্র চরিত্র নয়। কিছু থাকতে পারে ^
, <
, >
, |
, (
, )
, &
, !
, "
। এগুলির (বাদে "
) বেশিরভাগই পালানো যায় - যা একটি পালানো-চরিত্রের সাথে উপস্থাপিত হয় ^
যাতে আক্ষরিক চরিত্রটি specialোকানো হয়, এর বিশেষ অর্থটি দমন করে। তাও ছিল doublequoted স্ট্রিং ভিতরে তাদের বিশেষ ফাংশন হারান, এবং "
একটি ব্যাকস্ল্যাশ সঙ্গে পলান হয়: \"
। কিছু ক্যারেট ( ^
) কে ডাবলকোট-সংযুক্ত স্ট্রিংয়ের ভিতরে দ্বিগুণ করার প্রয়োজন হতে পারে এবং যেখানে দেরী পরিবর্তনশীল প্রতিস্থাপন ঘটে ( !
বিশেষ অর্থ)।
কমান্ড প্রম্পট
দুর্ভাগ্যক্রমে, যখন কমান্ড প্রম্পট উইন্ডোতে সরাসরি কমান্ডগুলি টাইপ করা হয়, দ্বিগুণ %
অক্ষর তৈরি হয় %%
যেমন উপরোক্ত পদ্ধতির ক্ষেত্রে এটি কার্যকর হয় না।
একটা কার্যসংক্রান্ত কমান্ড প্রক্রিয়াকরণে একটি ছল শোষণ উপস্থিত হতে পারে - আপনি আক্ষরিক পেতে পারেন %
টাইপ করে ^
পরে %
। যদিও এই পদ্ধতিটি নির্বোধ নয়: যদি আপনার ফাইলের নামটি ডাবল উক্তিগুলিতে আবদ্ধ থাকে তবে ^
আক্ষরিক অর্থে ব্যাখ্যা করা হয় (এবং উদ্ধৃতি ব্যতীত সরানো হয় না)
- কমান্ড
echo %windir%
আউটপুট উত্পাদন করে:c:\windows
- কমান্ড
echo %^windir%
আউটপুট উত্পাদন করে:%windir%
- কমান্ড
echo "%^windir%"
আউটপুট উত্পাদন করে: "%^windir%"
(অতিরিক্ত সহ ^
- আমরা যা চেয়েছিলাম তা নয়)
আমি এর পরিবর্তে অন্য কাজের প্রস্তাব দিই:
- এর মতো একটি ভেরিয়েবল তৈরি করুন:
set "p=%"
%p%
আপনার যেহেতু আক্ষরিক শতাংশের চিহ্ন প্রয়োজন তা ব্যবহার করুন: echo "%p%windir%p%"
এখন আউটপুট উত্পাদন করবে:"%windir%"
একই for
কমান্ডটি আক্ষরিক শতাংশ সাইন ইন কমান্ড পেতে ব্যবহার করা যেতে পারে , তবে খেয়াল করুন যে বিএটি-ফাইলের বিপরীতে for
সরাসরি কমান্ডটি চাবি দেওয়ার সময় আপনি শতাংশের চিহ্নগুলি দ্বিগুণ করেন না ।
ফাইল সিস্টেম সংরক্ষিত অক্ষর
আপনি সাধারণত এর নামে নিম্নলিখিত সংরক্ষিত অক্ষরযুক্ত একটি ফাইল বা ডিরেক্টরি তৈরি করতে পারবেন না:, /
?
<
>
\
:
*
|
"
NULL- চিহ্ন এবং 1 থেকে 31 কোড সহ অক্ষর; এছাড়াও .
এবং স্থান শেষ অক্ষর হতে পারে না; এবং নিম্নলিখিত নাম অবৈধ আছেন: com1
com2
com3
com4
com5
com6
com7
com8
com9
lpt1
lpt2
lpt3
lpt4
lpt5
lpt6
lpt7
lpt8
lpt9
con
nul
prn
।
যাইহোক, কিছু এই সীমাবদ্ধতা সঙ্গে ফাইল পাথ prefixing বাইপাস করা যাবে \\?\
ভালো: \\?\c:\test...\nul
। অন্তত সংরক্ষিত নামযুক্ত ফাইল এবং স্পেস এবং ডট দিয়ে শেষ হওয়া ফাইলগুলি সেভাবে ম্যানিপুলেট করা যেতে পারে।
আরও কী, এনটিএফএস ফাইল সিস্টেম নিজে নিজে বেশ কয়েকটি নামকরণ সাবসিস্টেমগুলি সমর্থন করে: ডস, উইন্ডোজ এবং পসিক্স। এটি উইন্ডোজ সাবসিস্টেম যা উপরের সমস্ত বিধিনিষেধ রয়েছে, অন্যদিকে পসিক্স কেবলমাত্র নিষিদ্ধ করে /
এবং নুল-প্রতীক।
জিএনইউ / লিনাক্স ওএস (পসিক্সের একটি সুপারসেট) এইভাবে ফাইল / ডিরেক্টরি নাম তৈরি করতে (এবং মুছে ফেলতে পারে) যা বেশিরভাগ সাধারণ উইন্ডোজ এপিআই ফাংশন (এবং তাই উইন্ডোজ প্রোগ্রামগুলি) কাজ করতে পারে না। উইন্ডোজ এক্সপিতে তাদের সাথে কাজ করা বিনামূল্যে "ইউনিক্স সাবসিস্টেমের জন্য পরিষেবাগুলি" (এসএফইউ) ইনস্টল করে সম্ভব হয়েছিল; ভিস্তার উপর এবং তৃতীয় পক্ষের উপরের সরঞ্জামগুলির জন্য এটির প্রয়োজন। আমি নিশ্চিত না যে নতুন ওবুন্টু অন উইন্ডোজ 10 সাবসিস্টেম এটি করতে পারে কিনা।
<test>
। এটি উইন্ডোজ ফাইল পরিচালনার কাজগুলি ব্যবহার করেই করা যায় না।