বাশ-এ, আমি এটি করতে পারি EDITOR=vim command
এবং সেট command
দিয়ে চালানো হবে তবে এটি শেলের নিজেই মানটিকে প্রভাবিত করবে না । এটি কি এটি করা সম্ভব ?EDITOR
vim
EDITOR
cmd.exe
বাশ-এ, আমি এটি করতে পারি EDITOR=vim command
এবং সেট command
দিয়ে চালানো হবে তবে এটি শেলের নিজেই মানটিকে প্রভাবিত করবে না । এটি কি এটি করা সম্ভব ?EDITOR
vim
EDITOR
cmd.exe
উত্তর:
নোট যে cmd /C "set "EDITOR=vim" && echo %EDITOR%"
কাজ করবে না।
বা হবে নাcmd /C "setlocal ENABLEDELAYEDEXPANSION && set "EDITOR=vim" && echo !EDITOR!"
ডিলিমিটার হিসাবে /V
বিলম্বিত পরিবেশের পরিবর্তনশীল প্রসারণ সক্ষম করতে বিকল্পটি কী হবে !
।
C:\> cmd /V /C "set EDITOR=vim&& echo !EDITOR!"
vim
হিসাবে নীচের লক্ষনীয় দ্বারা maoizm , এটা cmd /V /C
, না cmd /C /V
(যা হবে না কাজ)
আমি কোনও বাস্তবিক কারণের কথা ভাবতে পারি না যা আপনি আসলে কোনও একক আদেশের প্রসঙ্গেই চাইবেন want
সাধারণত, আপনার যখন এটি দীর্ঘ কমান্ড লাইনে একাধিকবার ব্যবহৃত মান প্রতিস্থাপন করতে হয় তখন আপনার প্রয়োজন হয়।
উদাহরণস্বরূপ, নেক্সাসে একটি ফাইল স্থাপন (পাঠযোগ্যতার জন্য একাধিক লাইনে):
cmd /v /c "set g=com.agroup&& set a=anArtifact&& set v=1.1.0&& \
mvn deploy:deploy-file -Dfile=C:\path\!a!-!v!.jar \
-Dpackaging=jar -DgroupId=!g! -DartifactId=!a! -Dversion=!v! \
-DrepositoryId=nexus
-Durl=http://myserver/nexus/content/repositories/my-repo/"
একটি দীর্ঘ এবং জটিল কমান্ড লাইনে গ্রুপ, আর্টিফ্যাক্ট (2 বার ব্যবহৃত) এবং সংস্করণ প্রতিস্থাপনের পরিবর্তে আপনি উক্ত কমান্ডের শুরুতে এগুলি সম্পাদনা করতে পারবেন । প্যারামিটারের মানগুলি পরিচালনা ও পরিবর্তন করা আরও পরিষ্কার / সহজ।
'vim'
কিন্তু 'vim '
গত কমান্ড হবে। শেষ পর্যন্ত স্থানটি এড়াতে অভ্যন্তরীণ উদ্ধৃতিগুলি যুক্ত করুন।
cmd /v/c "..."
কাজ করে, তবে cmd /c/v "..."
ব্যর্থ হয় - আশা করি এটি আপনাকে 15 মিনিট বাঁচাতে পারে
আপনি উইন্ডোতে এটি করতে পারেন কোনও কিছু ইনস্টল করার প্রয়োজন নেই।
cmd /C "set EDITOR=vim && set"
আপনি ভেরিয়েবলের একটি তালিকা দেখতে পাবেন এবং আপনি EDITOR = vim দেখতে পাবেন, এখন আবার "সেট" চালান এবং এটি তালিকাভুক্ত হবে না।
অতিরিক্ত কমান্ড যুক্ত করতে আপনি একাধিক && এর কাজ করতে পারেন:
cmd /C "set EDITOR=vim && do this && do that && otherstuff"
সম্পাদনা: / সি চালানোর পরে সরাসরি নতুন সেন্টিমিডিটি প্রস্থান করে, আপনি যদি নতুনটির সাথে আউটপুট উত্পাদন করেন তবে এটি প্যারেন্ট উইন্ডোতে দৃশ্যমান হবে।
আপনি / কে ব্যবহার করতে বেছে নিতে পারেন যে ক্ষেত্রে নতুন সেন্টিমিডি উইন্ডো রান শেষে খোলা থাকে।
set name=foo&&echo %name%
নাকি set username=foo&&echo %username%
?
আপনি env
GnuWin32 http://gnuwin32.sourceforge.net/ এ প্যাকেজ CoreUtils থেকে পোর্টেড ব্যবহার করতে পারেন
env.exe
% PATH% ভেরিয়েবলের সাথে উপস্থিত ডিরেক্টরিটি পরীক্ষা করুনenv EDITOR=vim command
আমি একটি ব্যাচ ফাইলটি নকিয়া করেছি env.cmd
যা লিনাক্স env
কমান্ডের মতো কমবেশি কাজ করে :
echo off
setlocal
for %%f in (%*) do (
echo %%f|find "=" >nul:
if errorlevel 1 goto DoCmd
set %%f
shift
)
:DoCmd
%1 %2 %3 %4 %5 %6 %7 %8 %9
endlocal
পার্থক্যটি হ'ল cmd
পার্স করার কারণে , পরিবেশের অ্যাসাইনমেন্টগুলি উদ্ধৃত করা দরকার, সুতরাং আপনার আদেশটি হ'ল :
env "EDITOR=vim" command [up to 8 parameters]
for
লুপের মধ্যে কমান্ড স্ট্রিং তৈরি করে 8-প্যারামিটার সীমাবদ্ধতা অপসারণ করতে ব্যাচ ফাইলটি বিস্তারিতভাবে ব্যাখ্যা করা যেতে পারে (বিলম্বিত সম্প্রসারণের প্রয়োজন হবে)।
%*
পেনাল্টিমেট লাইন (যেমন, :DoCmd
লেবেলের পরে এক ) হিসাবে ব্যবহার করবেন না?
%*
হল মূল প্যারামিটার তালিকা: এটা দ্বারা প্রভাবিত হয় shift
(অসদৃশ $*
ইউনিক্স মধ্যে)।