আমি জানি যে %0
ব্যাচের স্ক্রিপ্টের পুরো পথ রয়েছে, যেমনc:\path\to\my\file\abc.bat
আমি path
সমান হতে হবেc:\path\to\my\file
আমি কীভাবে এটি অর্জন করতে পারি?
আমি জানি যে %0
ব্যাচের স্ক্রিপ্টের পুরো পথ রয়েছে, যেমনc:\path\to\my\file\abc.bat
আমি path
সমান হতে হবেc:\path\to\my\file
আমি কীভাবে এটি অর্জন করতে পারি?
উত্তর:
%~dp0
ডিরেক্টরি হবে। সমস্ত পাথ সংশোধনকারী সম্পর্কে কিছু ডকুমেন্টেশন এখানে । মজার জিনিস :-)
চূড়ান্ত ব্যাকস্ল্যাশ অপসারণ করতে, আপনি এর :n,m
মতো স্ট্রিংয়ের বাক্য গঠন ব্যবহার করতে পারেন :
SET mypath=%~dp0
echo %mypath:~0,-1%
দুর্ভাগ্যক্রমে %0
সিনট্যাক্সের সাথে সিনট্যাক্স যুক্ত করার উপায় আছে বলে আমি বিশ্বাস করি না :~n,m
।
%~0\..
- জানতাম আরও ভাল উপায় থাকতে হবে! এছাড়াও, আপনি সম্ভবত %~dp0
ডাবল উদ্ধৃতি চিহ্নগুলিতে সংযুক্ত করতে চাইবেন ( ""
যদি ডিরেক্টরিটির নাম ইত্যাদির ফাঁক থাকে)
%~dp0
শেষে রয়েছে `।। কীভাবে এটি অপসারণ করবেন আপনার ধারণা আছে?
SET msg=hello world
সূক্ষ্ম কাজ করে)। যাইহোক, অন্য কোথাও% মাইপাথ% ব্যবহার করার সময় আপনি এটিকে উদ্ধৃতিতে ব্যবহার করতে সতর্কতা অবলম্বন করতে চান, যদিও সেগুলির কোনওটির প্রয়োজন নেই cd
।
"\" কে অনুসরণ না করেই আপনি পাথ পেতে নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করতে পারেন
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
আপেক্ষিক পথ হতে পারে। এটিকে পুরো পথে রূপান্তর করতে, এরকম কিছু চেষ্টা করুন:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
সরাসরি ব্যবহার করবেন না?
%~dp0
আপেক্ষিক হতে পারে, যা ব্যবহারের ক্ষেত্রে নির্ভর করে সমস্যা হতে পারে বা নাও পারে
%~dp0
আপেক্ষিক পথ থাকতে পারে না, d
ড্রাইভ এবং p
পথের জন্য দাঁড়ানো, ড্রাইভ কীভাবে আপেক্ষিক হতে পারে?
%~dp0
এবং স্ক্রিপ্টটি আপেক্ষিক পথ হিসাবে চালিত হওয়ার পরেও এটি একটি পরম পাথ হবে। জেবের মন্তব্যে ধন্যবাদ, আমি এই উত্তর দিয়ে বোকা হইনি। লোকেরা কেন কেবল জিনিস তৈরি করে এবং অন্যদের কাছে তাদের বুনো কল্পনা ছড়িয়ে দিতে শুরু করে। আমার এই সহকর্মী যিনি এটি করেন তবে আমি তার (যুবক) বয়সের জন্য দোষারোপ করেছি। আমি আশা করি আমার ডাউন-ভোট গণনা করা উচিত।
আপনি ব্যবহার করতে পারেন %~dp0
, ডি মানে কেবল ড্রাইভ, পি মানে কেবলমাত্র পথ, 0 ব্যাচের ফাইলের পুরো ফাইল নামটির জন্য আর্গুমেন্ট।
\ ব্যবহারকারীরা \ অলিভার \ ডেস্কটপ \ example.bat তারপর যুক্তি সমান হবে সি: \ ব্যবহারকারীরা \ অলিভার \ ডেস্কটপ \, এছাড়াও আপনি কমান্ড ব্যবহার করতে পারেন উদাহরণস্বরূপ, যদি ফাইল পাথ সি ছিল set cpath=%~dp0 && set cpath=%cpath:~0,-1%
এবং ব্যবহার %cpath%
শেষে স্ল্যাশ মুছে ফেলার জন্য পরিবর্তনশীল।
%cd%
স্ক্রিপ্টটি চালাচ্ছে সেখান থেকে আপনাকে ডিরেক্টরিটির পথ দেবে।
শেষ ঘন্টা:
echo %cd%
%CD%
হ'ল বর্তমান ওয়ার্কিং ফোল্ডার, ফোল্ডারটি নয়, যেখানে ব্যাচ ফাইলটি সঞ্চয় করা আছে। তারা একই অবস্থান হতে পারে, তবে প্রায়শই তারা হয় না।
যে %CD%
পরিবর্তনশীল হবে।
@echo off
echo %CD%
%CD%
ব্যাচ স্ক্রিপ্টের বর্তমান ডিরেক্টরিটি ফেরত দেয়।
CD C:\Temp <CR> ECHO %CD%
( <CR>
নতুন লাইনে ...)
আমি একটি উইন্ডোজ 7 মেশিনে কাজ করছি এবং আমার বাশ স্ক্রিপ্টের জন্য নিখুঁত ফোল্ডার পাথ পেতে আমি নীচের লাইনগুলি ব্যবহার করে শেষ করেছি।
Http: //www.linuxj Journal.com/content/bash-parameter-expansion এ দেখার পরে আমি এই সমাধানটি পেয়েছি ।
#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder