এই উইন্ডো কমান্ডটি কীভাবে কাজ করে: প্রতিধ্বনিত% पथ:; = & প্রতিধ্বনি%


23

pathউইন্ডোতে ভেরিয়েবলের ভিতরে প্যাশগুলি মুদ্রণের জন্য সন্ধান করার জন্য কমান্ড-লাইন আমি এই সমাধানটিতে এসেছি । উত্তর হ'ল এই আদেশ:

echo %path:;=&echo.%

এখন আমি ভাবছি কীভাবে এটি কাজ করে।


উত্তর:


22

এটি একটি আকর্ষণীয় সমাধান যা আমি আগে কখনও দেখিনি। আমাকে ব্যাখ্যা করার চেষ্টা করুন:

  1. পুরো পথটি মুদ্রণ করতে, ব্যবহার করুন echo %path%। এটি সেমিকোলন ( ;) দ্বারা পৃথক একক লাইনে সমস্ত ডিরেক্টরি মুদ্রণ করবে
  2. কোনও চলকটিতে একটি স্ট্রিং অনুসন্ধান / প্রতিস্থাপন করতে ব্যবহার করুন %path:a=b%যা এর aসাথে সমস্ত অক্ষর প্রতিস্থাপন করবেb
  3. echo. একটি নতুন লাইন মুদ্রণ ব্যবহার করা হয়
  4. &কমান্ড পৃথক করতে ব্যবহৃত হয়, যেমন echo line1&echo line2দুটি লাইন প্রিন্ট করবে
  5. ফলস্বরূপ, পথের সেমিকোলনগুলি একটি নতুন লাইন মুদ্রণের জন্য একটি আদেশের সাথে প্রতিস্থাপিত হয় । অথবা এটি ' ;কিছুই না দিয়ে প্রতিস্থাপন , এবং তারপরে একটি নতুন লাইন প্রিন্ট ' হিসাবে ব্যাখ্যা করা হবে । আমি এটিতে কোনও দলিল খুঁজে পাচ্ছি না, সুতরাং এটি কেবল আমার ব্যাখ্যা interpretation সত্যি বলতে গেলে, আমি জানি না যে এটি সম্ভব ছিল, তবে আপনি সেখানে যান। আপডেট করুন আমার এই পদক্ষেপের ব্যাখ্যাটি বন্ধ বলে মনে হচ্ছে, এবং উইজউইজ্জেড ৪ দ্বারা আরও ভালভাবে ব্যাখ্যা করা হয়েছে

%% লক্ষণগুলি কীসের জন্য ব্যবহৃত হয়, আমরা কি বলতে পারি না echo path? ভেরিয়েবলের জন্য %% ব্যবহার করা হয়?
ইয়েকাঞ্চি

1
হ্যাঁ, এটি সঠিক, এগুলি একটি ভেরিয়েবলের মান পেতে ব্যবহৃত হয়। উদাহরণস্বরূপ: set greeting=Helloএবং তারপরে echo %greeting%। বিভ্রান্তিকরভাবে, PATHএকটি কমান্ড এবং একটি ভেরিয়েবল উভয়ই ঘটে তাই কমান্ডটি টাইপ করলে pathবা echo %path%একই ফল হয় will
বেরেন্ড

এই সিনট্যাক্স কি বলা হয়? এটা কি রেজেক্স? বা উইন্ডোজের
সিএমডিতে

আমি নিশ্চিত নই যে এর জন্য কোনও নাম আছে কিনা, এটি ডস-এ ভেরিয়েবলের কাজ করার উপায়। অন্যান্য ভাষা যেমন বাশ, $PATHউদাহরণস্বরূপ ব্যবহার করে ।
বেরেন্ড

2
ডস, বেরেন্ডের সাথে এটি করার কিছু নেই; এবং echo."একটি নতুন লাইন প্রিন্ট করার আদেশ" নয়। এটি উইন্ডোজ এনটি- জন্য মাইক্রোসফ্টের কমান্ড ইন্টারপ্রেটারcmd ; এবং পাথ উপাদান খালি থাকলে এটি এর অন্যান্য কার্যকারিতাটিতে স্যুইচ না করে তা নিশ্চিত করেecho. একটি পাথ উপাদান মুদ্রণ করার জন্য কমান্ডটি কেবল এটিই । প্রথমটি আসলে খুব বেশি হওয়া উচিত । echoechoecho.
জেডিবিপি

30

এটি কমান্ড-লাইন ভেরিয়েবল বিকল্প ব্যবহার করছে। %path:;=&echo.%মানে " %path%, তবে ;এর সাথে সমস্তগুলি প্রতিস্থাপন করুন &echo."। এর অর্থ হ'ল set path=C:\Windows\System32;C:\Windows\;;C:\Python37;:

echo %path:;=&echo.%

হয়ে:

echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.

যেহেতু &কমান্ড বিভাজক, এটি সমান:

echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.

ডস ব্যাচের কোয়ার্কের কারণে, এর পরে যখন কিছুই নেই তখন ব্যতীতecho. এটি অভিন্ন । যদি এটি হয় তবে এটি চালু বা বন্ধ রয়েছে তা আপনাকে বলার পরিবর্তে কেবল কিছুই মুদ্রণ করে না । এটি আউটপুট তৈরি করবে:echo ECHO

C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\

C:\Python37

C:\Users\wizzwizz4> 

সত্যই, এটি echo.%path:;=&echo.%যে ক্ষেত্রে %PATH%শুরু হয় সেই ক্ষেত্রে দায়বদ্ধ হওয়া উচিত ;, তবে এই আদেশটি যাইহোক বেশ চালাক।


বিস্তারিত detalias মধ্যে পেয়ে, সত্যিই echo( পরিবর্তে ব্যবহার করা উচিত echo.। এটি হ'ল কারণ echo.যখন আপনার কাছে একটি ফাইল ডাকা হয়েছে তখন সমস্যা হতে পারে echoএবং ধীর হয় কারণ এটি প্রতিবার চালিত হওয়ার সাথে সাথে ডিস্কটি পরীক্ষা করতে হবে ( %CD%এবং আমার মনে হয় সমস্ত কিছুই %PATH%)। (আমার কাছে উইন্ডোজের কোনও অনুলিপি নেই তাই আমি নিজে এটি যাচাই করতে পারি না; এটি কেবল %CD%বা অন্য কোথাও %PATH%যে echoফাইলটির উপস্থিতি প্রভাবিত করবে echo.এবং এটি কী করে?)


এটি বেশ কয়েকটি অপারেটিং সিস্টেম জুড়ে মাইক্রোসফ্ট / আইবিএম কমান্ড ইন্টারপ্রেটারদের দীর্ঘস্থায়ী আচরণ, এবং ব্যাচ স্ক্রিপ্টগুলির জন্য নির্দিষ্ট নয়। আমি যেমন বছর আগে সুপারuser.com/a/310157/38062 তে উল্লেখ করেছি , সাদা বাক্সের পাশাপাশি বেশ কয়েকটি বিরামচিহ্ন রয়েছে যা কমান্ড-নাম সমাপ্তি অক্ষর হিসাবে গণনা করে।
JdeBP

@ জেডিবিপি আমি মনে করি যে আরও দক্ষতার মধ্যে একটি হ'ল echo), তবে আমার সত্যি মনে নেই। ;-(
wizzwizz4

3
echo.মানুষ হ'ল বহু বছর আগে মানুষ সবচেয়ে বেশি প্রচলন করত। এটি অনেক বইয়ের মধ্যে একটি। দক্ষতা সমস্যা নয়। বিভিন্ন ফাইল উপস্থিত হওয়ার সাথে সাথে উদ্ঘাটিত আচরণ। আমি যখন cmdওএস / 2 -তে 16-বিটের জন্য 32-বিট প্রতিস্থাপন লিখেছিলাম , এই বিরামচিহ্নগুলি এবং এই অত্যন্ত অনিয়মিত বিশ্লেষণ আচরণের কমান্ডের নামগুলি ভঙ্গ করে আমি ইচ্ছাকৃতভাবে সদৃশ করিনি, এবং যা আমি নথিটিতে রেখেছি পার্থক্যের তালিকা। আমি echodotপরিবর্তে একটি বাহ্যিক কমান্ড দিয়েছি , যার echo.পছন্দসই হিসাবে কোনও একটি নাম থাকতে পারে ।
জেডিবিপি

@ জেডিবিপি এটিকে সত্যিই আকর্ষণীয় মনে হচ্ছে! আপনি কি মনে করেন যে এর কিছুটি নথিভুক্ত করতে পেরেছেন ?
wizzwizz4

আপনি যদি বিভিন্ন মন্তব্য লিঙ্কগুলি অনুসরণ করেন তবে আপনি কোনও তৃতীয় পক্ষের ফোরাম বার্তায় এই দাবিটি শেষ করেন যে echo(এটিই কেবল নিরাপদ সংস্করণ।
নিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.