ব্যাচ ফাইলগুলিতে, স্ট্যান্ডার্ড সি প্রোগ্রামগুলির মতো, আর্গুমেন্ট 0 এ বর্তমানে কার্যকর স্ক্রিপ্টের পথ রয়েছে। আপনি ০ %~dp0
র্থ আর্গুমেন্টের (যা বর্তমান স্ক্রিপ্ট) কেবলমাত্র পাথ অংশটি পেতে ব্যবহার করতে পারেন - এই পথটি সর্বদা একটি সম্পূর্ণরূপে যোগ্য পথ।
আপনি ব্যবহার করে আপনার প্রথম যুক্তির পুরোপুরি যোগ্যতাসম্পন্ন পাথ পেতে পারেন %~f1
, তবে এটি বর্তমান কার্যনির্বাহী ডিরেক্টরি অনুসারে একটি পথ দেয় যা আপনি যা চান তা স্পষ্টতই নয়।
ব্যক্তিগতভাবে, আমি প্রায়শই %~dp0%~1
আমার ব্যাচ ফাইলে আইডিয়ামটি ব্যবহার করি যা নির্বাহী ব্যাচের পথের সাথে সম্পর্কিত প্রথম যুক্তিকে ব্যাখ্যা করে। যদিও এর কোনও অসুবিধা নেই: প্রথম যুক্তি পুরোপুরি দক্ষ হলে এটি খারাপভাবে ব্যর্থ হয়।
আপনার যদি আপেক্ষিক এবং নিখুঁত উভয় পাথ সমর্থন করার প্রয়োজন হয় তবে আপনি ফ্রেডেরিক মেনেজের সমাধানটি ব্যবহার করতে পারেন : অস্থায়ীভাবে বর্তমান চলমান ডিরেক্টরিটি পরিবর্তন করুন।
এখানে একটি উদাহরণ যা এই প্রতিটি কৌশল প্রদর্শন করবে:
@echo off
echo %%~dp0 is "%~dp0"
echo %%0 is "%0"
echo %%~dpnx0 is "%~dpnx0"
echo %%~f1 is "%~f1"
echo %%~dp0%%~1 is "%~dp0%~1"
rem Temporarily change the current working directory, to retrieve a full path
rem to the first parameter
pushd .
cd %~dp0
echo batch-relative %%~f1 is "%~f1"
popd
যদি আপনি এটি সি: \ অস্থায়ী \ উদাহরণ হিসাবে সংরক্ষণ করেন। উদাহরণস্বরূপ এবং এটি সি থেকে চালান: \ ব্যবহারকারী \ হিসাবে সর্বজনীন
সি: \ ব্যবহারকারী \ পাবলিক> \ টেম্প \ উদাহরণ.bat .. \ উইন্ডোজ
... আপনি নিম্নলিখিত আউটপুট পর্যবেক্ষণ করবেন:
%~dp0 is "C:\temp\"
%0 is "\temp\example.bat"
%~dpnx0 is "C:\temp\example.bat"
%~f1 is "C:\Users\windows"
%~dp0%~1 is "C:\temp\..\windows"
batch-relative %~f1 is "C:\Windows"
ব্যাচের আর্গুমেন্টে মডিফায়ার সেটগুলির জন্য ডকুমেন্টেশন এখানে পাওয়া যাবে:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/call
realpath
শক্তিশালী পাথের স্বাভাবিককরণের জন্য একটি এনালগও প্রয়োজন ।