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


15

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

এটি যদি স্মার্ট টুল ছিল তবে এটি চমৎকার হবে, উদাহরণস্বরূপ:

  • PATH পরিবর্তনশীল বলার জন্য কিছু পথ যোগ করার সময় এবং এই পথটি ইতিমধ্যেই সেখানে রয়েছে এই এন্ট্রিটিকে ডবল করতে হবে না।
  • PATH পরিবর্তনশীল একটি নতুন পথ সন্নিবেশ করা উচিত অন্য কোন পাথের আগে / পরে নির্দিষ্ট আদেশ (প্রথম, সপ্তম, শেষ ইত্যাদি)।
  • ভেরিয়েবলের মানটি শুধুমাত্র অংশটি পরিবর্তন করা সম্ভব (PATH সমস্ত পাথের একটি তালিকা থেকে প্রদত্ত পথের ক্ষেত্রে)।

এবং শেষ কিন্তু অন্তত না - আমি আমার পরিবর্তন সেশন মধ্যে চলতে চান তাই সহজ সেট আউট প্রশ্ন ...

এই জন্য বলা খুব সুন্দর GUI হাতিয়ার আছে পথ সম্পাদক এবং আমি এই মত কিছু প্রয়োজন কিন্তু কমান্ড লাইন জন্য।


4
টেকনিক্যালি, হ্যাঁ। এটি সেট বলা হয়। আমি এটা সুন্দর না জানি, কিন্তু আপনি হাত সরঞ্জাম সঙ্গে ভেরিয়েবল সেটিং চেয়ে অনেক সহজতর পেতে পারেন না।
Michael Todd

মজাদার. আমি এই জন্য একটি মোটামুটি সুপরিচিত তৃতীয় পক্ষের হাতিয়ার আছে নিশ্চিত করার জন্য চিন্তা।
Sasha Chedygov

উইন্ডোজ কি সংস্করণ আপনি চলমান হয়?
Sasha Chedygov

@ মিউজিকফিক ভিস্তা হোম প্রিমিয়াম 64 বিট
Piotr Dobrogost

উত্তর:


16

আমি এই যে কোন টুল জানি না, কিন্তু সম্ভবত আপনি ব্যবহার করতে পারেন reg কমান্ড প্রয়োগ করুন:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path

বর্তমান পথ, এবং

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "newPath" /f

আপনার নতুন মান লিখতে।

HKLM এ লেখার অ্যাক্সেস থাকার জন্য আপনাকে প্রশাসকের অধিকারের প্রয়োজন। যদি এটি একটি সমস্যা হয় তবে ব্যবহারকারী নির্দিষ্ট পথ সেটিংস পরিবর্তন করার বিষয়ে বিবেচনা করুন HKCU\Environment পরিবর্তে.


1
এই উত্তরটি গ্রহণ করা উচিত ছিল, এটি একটি পরিবেশের পরিবর্তনশীল পরিবর্তন করতে পারে এবং এমনকি একটি ব্যাচ ফাইলেও সিদ্ধ করা যেতে পারে যাতে শুধুমাত্র নাম এবং নতুন মান লিখতে হয়।
Tom Wijsman

যদি ভিআইয়ের সাথে মিলিত হয়, তাহলে প্রশ্নকারীর মানদণ্ড পূরণের কাছাকাছি এসে পৌঁছানো হবে। উদাহরণস্বরূপ একটি ব্যাচ ফাইল যা একটি অস্থায়ী পাঠ্য ফাইলের পথ লেখায়, এটি vi তে খোলে, তারপর যখন আপনি vi বন্ধ করেন তখন এটি ফাইলটিকে পাথে লিখে। এভাবে আপনি সহজেই কমান্ড লাইনের মাধ্যমে আপনার পথ সম্পাদনা করতে পারেন। আমি এক্সপি তে এমন কিছু করেছি যা ব্যাচ ফাইল, নোটপ্যাড এবং সেই reg কমান্ডের সাথে।
barlop

1
সতর্কতা যদি আপনি কিছু মূর্খ না করতে চান তবে এই অনর্থক অনুলিপি করবেন না ...
n611x007

7

যদি আপনি কোন পরিবেশ পরিবর্তনশীল সেট করার জন্য একটি সাধারণ উপায় প্রয়োজন এবং পরিবর্তনগুলি অব্যাহত থাকে তবে setx.exe ব্যবহার করার সরঞ্জাম হতে হবে। এটি "স্মার্ট" জিনিসগুলি আপনি যা করতে চাইছেন তা করতে পারছেন না, যদিও ...

setx.exe উইন্ডোজ ভিস্তা বা পরে অন্তর্ভুক্ত করা হয়েছে; আপনি যদি উইন্ডোজের পূর্ববর্তী সংস্করণটি ব্যবহার করেন তবে এটি পাওয়ার জন্য উপরের ডাউনলোড লিঙ্কটি ব্যবহার করতে পারেন।


5

বর্তমান প্রোগ্রামের জন্য, আছে path:

এক্সিকিউটেবল ফাইলগুলির জন্য অনুসন্ধান পথ প্রদর্শন বা সেট করে।

PATH [[drive:]path[;...][;%PATH%]
PATH ;

আদর্শ PATH ; সব অনুসন্ধান পথ সেটিংস এবং সরাসরি সাফ করুন cmd.exe বর্তমান ডিরেক্টরি শুধুমাত্র অনুসন্ধান।

আদর্শ PATH বর্তমান পথ প্রদর্শনের জন্য পরামিতি ছাড়া।   সুদ্ধ %PATH% নতুন পথ সেটিং মধ্যে পুরানো পথ হতে হবে   নতুন সেটিং যোগ করা।

যাইহোক, এই হিসাবে বেশ অনেক set PATH

পরিবেশ ভেরিয়েবলগুলির জন্য আপনাকে অব্যাহত রাখতে রেজিস্ট্রি বা ব্যবহার করতে হবে setx


3

আমি ব্যবহারকারীদের উচ্চতর বিশেষাধিকার ছাড়াই পরিবেশ ভেরিয়েবল সম্পাদনা ডায়ালগ চালানোর অনুমতি দেওয়ার ক্ষমতা আবিষ্কার করেছি।

স্টার্ট মেনু থেকে, নিম্নলিখিত চালান:

rundll32 sysdm.cpl,EditEnvironmentVariables

1
GUI সম্পাদনা উইজেটে যাওয়ার কমান্ড লাইনের জন্য +1, কারণ এটি অবশ্যই ক্লিক পাথের চেয়ে আরও বেশি সোজা, যদিও উত্তরের উত্তরটি সীমাবদ্ধ, কারণ Q কমান্ড লাইন থেকে PATH সম্পাদনা সম্পর্কে।
matt wilkie

2

প্যাথ সেট করুন

(সাহায্য সেট)


1
এটি কেবলমাত্র টার্মিনাল সেশনের জন্য, এবং পুরানো পাথটি পুনরায় টাইপ করার জন্য প্রয়োজনীয় মান যোগ / পরিবর্তন করতে হবে।
John T

2
সত্য না. সেট প্যাথ =% পাথ%; c: \ newpath
Michael Todd

2
আপনি এখনও এটি টাইপ করেছেন, শুধু অপ্রকাশিত :) যেটি সংরক্ষণ করবে না, কমান্ড প্রম্পটটি থেকে বেরিয়ে যাওয়ার চেষ্টা করুন এবং একটি নতুন খুলুন তারপর আপনার পথ পরীক্ষা করুন।
John T

তিনি সেশন মধ্যে স্থির করা প্রয়োজন কিনা তা নির্দিষ্ট করা হয়নি।
sangretu

4
আচ্ছা যদি আপনি কোন প্যাথিডিটর (তার পরামর্শ) করেন তা পরীক্ষা করে দেখুন, এটি স্থায়ীভাবে এটি সংরক্ষণ করে। সেট PATH শুধুমাত্র প্রোগ্রামের জন্য স্ক্রিপ্ট নির্মাণ করতে ব্যবহৃত হয় কারণ এটি অস্থায়ী।
John T

1

আমি এই জন্য ব্যাচ স্ক্রিপ্ট একটি সেট লিখেছেন। addpath.bat পাথের উপাদান যোগ করে, rmpath.bat পাথ থেকে উপাদানগুলি সরান, এবং lpath.bat শুধু পাথ তালিকাবদ্ধ করে। কিন্তু তারপর আমি কিছু সমর্থন স্ক্রিপ্ট প্রয়োজন, তাই chkpath.bat আছে।

এটি তুচ্ছ না এবং tr.exe এবং cat.exe, ইউনিক্স-স্টাইল ইউটিলিটিগুলির কয়েকটি প্রয়োজন। কারণটি তুচ্ছ নয়: cmd.exe এ কোন ব্যাকটিক্স নেই (যদিও আপনি এটির জন্য loops ব্যবহার করতে পারেন), এবং ছোট নামগুলি বনাম ছোট নামগুলি।

addpath.bat:

@echo off
setlocal
set cwd=%~dps0

goto testit

:loopy

call %cwd%chkpath "%~1"
if %errorlevel%==2 (
  set path=%path%;%~1
)

shift

:testit
if not _%1==_ goto loopy


call %cwd%lpath.bat

endlocal & set path=%path%

ChkPath.bat:

@echo off
goto START

-------------------------------------------------------
chkpath.bat

checks path for existence of the given segment.
Returns 1 if present, 2 if not present, 0 if not checked.

The matching and checking complicated by case sensitivity and "short pathnames".

created sometime in 2003 and lovingly maintained since then.


-------------------------------------------------------

:START
setlocal enabledelayedExpansion
set rc=0
set cwd=%~dps0
set curdrive=%~d0
set tr=%curdrive%\bin\tr.exe
set regexe=%windir%\system32\reg.exe


if _%1==_ goto Usage


@REM convert arg 1 to a fully-qualified, short path name,
@REM and then convert to uppercase.
set toupper=%~fs1
call :ToUpper
set tocheck=%toupper%


if not _%TEMP%==_ goto GotTemp
call :gettemp


:GotTemp
set d=%DATE:~4%
set stamp=%d:~6%%d:~3,2%%d:~0,2%%TIME::=%
set d=
set tempfile1=%TEMP%\chkpath1-%stamp%.tmp

echo %path% | %tr% ; \n  >  %tempfile1%

@REM check each element in the path for the match:
for /f  "delims=^" %%I in (%tempfile1%) do (
  if !rc!==0 (
call :CheckElt "%%I"
  )
)

if %rc%==0 set rc=2
goto END


--------------------------------------------
* checkelt
*
* check one element in the path to see if it is the same
* as the TOCHECK string. The element is first canonicalized.
*

:CheckElt
@REM remove surrounding quotes
set ERF=%1
if [x%ERF%]==[x] goto CheckEltDone
@REM convert to fully-qualified, short paths, uppercase
set TOUPPER=%~fs1%
call :ToUpper
if _%TOCHECK% == _%TOUPPER% set rc=1
:CheckEltDone
goto:EOF
--------------------------------------------


--------------------------------------------
* backtick
*
* invoke a command and return the result as a string.
* This is like backtick in csh or bash.
* To call, set variable BACKTICK to the command to be run.
* The result will be stored in the env variable of the same name.
*

:backtick
FOR /F "usebackq delims=" %%i IN (`%backtick%`) DO (
  SET backtick=%%i
)
goto backtick_done
:backtick_none
  SET backtick=nothing to exec
:backtick_done
goto:EOF
--------------------------------------------


--------------------------------------------
* gettemp
*
* get the temporary directory, as stored in the registry.
* Relies on backtick.
*
* The result set TEMP.
*

:gettemp
set regkey=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
set regvalname=Local AppData
set backtick=%regexe% query "%regkey%" /v "%regvalname%"
call :backtick
for /f "tokens=4" %%a in ("%backtick%") do (
  set temp=%%a
)
goto:EOF
--------------------------------------------



--------------------------------------------
* ToUpper
*
* Convert a string to all uppercase.
* To call, set variable TOUPPER to the thing to be converted.
* The result will be stored in the env variable of the same name.
*

:ToUpper
  FOR /F "usebackq delims=" %%I IN (`echo %toupper% ^| %tr% a-z A-Z`) DO (
SET toupper=%%I
  )
goto:EOF
--------------------------------------------


--------------------------------------------
:CleanUp
  if _%tempfile1%==_ goto CleanUpDone
  if exist %tempfile1% del %tempfile1%
  :CleanUpDone
goto:EOF
--------------------------------------------


--------------------------------------------
:Usage
echo.
echo Usage: chkpath ^<path^>
echo checks if path element is included in path variable.
echo returns 1 if yes, 2 if no, 0 if not checked.
echo.
goto END
--------------------------------------------


:END
call :CleanUp

:ReallyEnd

endlocal & set errorlevel=%rc%
@REM set errorlevel=%rc%
@REM echo %errorlevel%

lpath.bat:

@echo.
@set curdrive=%~d0

@REM This form post-fixes a | at the end of each path element. Useful for debugging trailing spaces.
@REM @path | %curdrive%\cygwin\bin\sed.exe -e s/PATH=// -e 's/;/^|\n/g' -e 's/$/^|/g'

@REM This form shows bare path elements.
@REM @path | %curdrive%\cygwin\bin\sed.exe -e 's/PATH=//' -e 's/;/^\n/g'
@path | %curdrive%\utils\sed -e "s/PATH=//" | %curdrive%\utils\tr ; \n
@echo.

আমি মনে করি for লুপ পরিবর্তে ব্যবহার করা যেতে পারে tr / cat খুব।
grawity

1

আপনি gtools সংগ্রহের প্যাডেড চেক করতে চাইতে পারেন: http://www.p-nand-q.com/gtools.html

এটি কমান্ড প্রম্পটের জন্য কমান্ডগুলির একটি সেট সরবরাহ করে

pathed /APPEND %CD% /USER

উদাহরণস্বরূপ বর্তমান পথ পরিপূরক। আমি সত্যিই সৎ হতে এটি চেক আউট না, আমি একটি GUI ব্যবহার সঙ্গে সম্পূর্ণ সূক্ষ্ম।

অন্যান্য বিকল্পগুলি হল:

  /MACHINE: print machine PATH
     /USER: print user PATH
      /ADD: add variable at the head
   /APPEND: add variable at the tail
   /REMOVE: remove path / index
     /SLIM: strip duplicate vars
      /ENV: environment variable, defaults to PATH

একসঙ্গে একই সংগ্রহের সাথে, আপনি নিজেকে কিছু ভাল সরঞ্জাম পেয়েছেন, আমি মনে করি। যা "PATH এ এক্সিকিউটেবল ফাইল সনাক্ত করে"।

 /EXTENSION: search for extension , can be a ; separated list
       /DIR: add directory , can be a ; separated list
 /RECURSIVE: search directories recursively
    /SINGLE: stop after the first find result
       /ENV: environment variable, defaults to PATH
FILE {FILE}: one or more files to find

সূত্র: http://op111.net/82/


1
আপনি কি লিঙ্ক করছেন তা ব্যাখ্যা করতে পারেন? সংযুক্ত সামগ্রী অনুপলব্ধ হলে লিঙ্ক-শুধুমাত্র উত্তর অবৈধ হতে পারে।
bwDraco

কি নিশ্চিত। দুঃখিত আমি প্রশ্নটি উল্লেখ করেছিলাম।
hugo der hungrige

Gtools এবং ইউএসএ জন্য URL দেখায় এখন মৃত। p-nand-q.com/gtools.html
DevPlayer

0

উইন্ডো সার্ভার 2003 রিসোর্স কিট সরঞ্জাম থেকে পাথ ম্যানেজার (pathman.exe) আমি খুঁজে পেতে পারে নিকটতম ম্যাচ। এটি ইতিমধ্যে এনটি রিসোর্স কিট পাওয়া যায়।


হয়তো চেষ্টা করুন setx.exe
n611x007

@ N611x007, setx সাধারণ পরিবেশ ভেরিয়েবল জন্য হয়; pathman বিশেষভাবে manipulating জন্য (যেমন, পদান্বয় ) পথ.
Synetech

0

ডিরেক্টরী% PATH% এ উপস্থিত থাকলে কিভাবে পরীক্ষা করবেন? স্ট্যাক ওভারফ্লো উপর একটি আছে অসামান্য বিবরণ যা উইন্ডোজ প্যাথ এডিটিংকে তাদের পরাস্ত করার জন্য একটি ব্যাচ ফাইলের সাথে কঠিন করে তোলে। সঠিকভাবে কিভাবে ব্যবহার করতে figuring addpath.bat এটি কলিং কাঠামো আমার কাছে নতুন ছিল, কারণ এটি অনুশীলনের একটি বিট নিয়েছে, কিন্তু এটি কাজ করে:

set _path=C:\new\directory\to\add\to\path
call addpath.bat _path
set _path=

এবং যদি এটি ইতিমধ্যে উপস্থিত থাকে তবে পুনরাবৃত্তি ফিরিং নতুন ডিরেক্টরি যোগ করবে না। এই সেশন জুড়ে ধারাবাহিক সম্পাদনা করতে ঠিকানা না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.