কমান্ড-লাইন থেকে কীভাবে PATH ব্যবহারকারী পরিবেশের পরিবর্তনশীল আপডেট করবেন update


12

সিস্টেম লেভেল কনফিগারেশনের সাথে আমার একটি সিস্টেম PATH ভেরিয়েবল রয়েছে। আমি ব্যবহারকারী-নির্দিষ্ট কনফিগারেশনের সাথে PATH পরিপূরক করতে ব্যবহারকারীর PATH ভেরিয়েবলটি ব্যবহার করি।

আমি উদাহরণস্বরূপ setx সহ কমান্ড-লাইন থেকে ব্যবহারকারী PATH ভেরিয়েবল আপডেট করতে চাই ।

তবে সেটেক্সে বিদ্যমান ব্যবহারকারীর পথটি কীভাবে উল্লেখ করতে হয় তা আমি জানি না।

নিম্নলিখিত কমান্ডে (এম / ছাড়াই সেটেক্স)

setx PATH c:\my-user-specifc-bin-path;%PATH%

প্রথম পাঠাথ মানে ব্যবহারকারী পাথ তবে দ্বিতীয়% প্যাথ% "পূর্ণ" (ব্যবহারকারী + সিস্টেম) পাথ দ্বারা প্রতিস্থাপিত হবে।

সুতরাং এর অর্থ হ'ল পুরো সিস্টেমের পাথটি ব্যবহারকারী প্যাথ-এ নকল হবে ... যা আমি চাই তা নিশ্চিতভাবে নয়।

আমি চাই:

  • শুধুমাত্র ব্যবহারকারী PATH পরিবেশ পরিবর্তনশীলকে প্রভাবিত করুন
  • বিদ্যমান মানটিতে এক বা একাধিক পাথ উপাদান যুক্ত করুন / প্রস্তুত করুন
  • কমান্ড-লাইন থেকে এটি করুন।

আমার কাছে মনে হয় যে আপনি যখন ব্যবহার করবেন তখন আপনি সংযুক্ত হওয়ার ;%PATH%জন্য বিদ্যমান পথ (সিস্টেমের পথ থেকে প্রাপ্ত) জিজ্ঞাসা করছেন।
ড্যানিয়েল আর হিক্স

উত্তর:


3

পাওয়ারশেল সংস্করণ, ব্যবহারকারীর জন্য PATH সেট করুন:

  1. বর্তমান ব্যবহারকারীর জন্য নতুন PATH (ওভাররাইট) সেট করুন:
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "C:\MyPath1"
  1. বর্তমান ব্যবহারকারী PATH এ সংযোজন সেট করুন:
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "$((Get-ItemProperty -path HKCU:\Environment\ -Name Path).Path);C:\MyPath1"
  1. বর্তমান ব্যবহারকারী PATH এ প্রিপেন্ড সেট করুন:
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "C:\MyPath1;$((Get-ItemProperty -path HKCU:\Environment\ -Name Path).Path)"

12

ব্যবহারকারী PATH সেট করতে পূর্বের কোনও মান ওভাররাইটিং:

setx PATH "C:\MyPath1"

বিদ্যমান ব্যবহারকারী PATH- তে একটি মান "সি: \ মাইপ্যাথ0" প্রিপেন্ড করতে:

for /f "skip=2 tokens=3*" %a in ('reg query HKCU\Environment /v PATH') do @if [%b]==[] ( @setx PATH "C:\MyPath0;%~a" ) else ( @setx PATH "C:\MyPath0;%~a %~b" )

বিদ্যমান ব্যবহারকারী PATH এ "C: \ MyPath2" মান যুক্ত করতে:

for /f "skip=2 tokens=3*" %a in ('reg query HKCU\Environment /v PATH') do @if [%b]==[] ( @setx PATH "%~a;C:\MyPath2" ) else ( @setx PATH "%~a %~b;C:\MyPath2" )

If-other শর্তটি প্রয়োজনীয় কারণ ব্যবহারকারী PATH এর ফাঁকা স্থান থাকতে পারে বা নাও থাকতে পারে। আপনি যদি চান তবে আপনি জেনেরিক ব্যাচ ফাইল (প্রতিটি% চিহ্নটি দ্বিগুণ করার বিষয়ে নিশ্চিত হন) হিসাবে কমান্ডগুলি সংরক্ষণ করতে পারেন যা আর্গুমেন্ট হিসাবে সেট / প্রেন্ডেন্ড / সংযোজনীয় মানটিকে স্বীকার করে।

ব্যাচ ফাইল

:: PATH-ADD - add a path to user path environment variable

@echo off
setlocal

:: set user path
set ok=0
for /f "skip=2 tokens=3*" %%a in ('reg query HKCU\Environment /v PATH') do if [%%b]==[] ( setx PATH "%%~a;%1" && set ok=1 ) else ( setx PATH "%%~a %%~b;%1" && set ok=1 )
if "%ok%" == "0" setx PATH "%1"

:end
endlocal
echo.

1
আরও ব্যাখ্যা প্রয়োজন। % এ কি,% বি কি?
অফসজে কে

দুর্ভাগ্যক্রমে এটি কার্যকর হয় না যদি ব্যবহারকারী PATH ইতিমধ্যে সংজ্ঞায়িত করা হয় না :(
এখন 3

@ কেজেকে: for /?আপনাকে যা জানা দরকার তা আপনাকে জানিয়ে দেবে। :) আমি অহেতুক এগুলি এখানে সমস্তই প্রতিলিপি করতে চাইনি এবং ভেবেছিলাম যে তথ্যটি যেভাবেই বের করা সহজ হবে।
করণ

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

4

প্রয়োজন SETX /M, ডিফল্ট SETXসেট করাHKEY_CURRENT_USER

SETX /M PATH c:\my-bin-path;%PATH%

এটি সিস্টেমের PATH ভেরিয়েবলকে প্রভাবিত করে ... সম্ভবত আমার উদাহরণটি বিভ্রান্তিকর ছিল, তবে আমি বিশেষত ব্যবহারকারী PATH ভেরিয়েবলটি আপডেট করতে চাই।
ক্রিশ্চিয়ান লেমার


1

এটি কাজ করে বলে মনে হচ্ছে:

setx PATH "c:\my-user-specifc-bin-path-which-may-contain-spaces;"%%PATH%%

স্থানীয় ব্যবহার করে ব্যবহারকারী বা সিস্টেম আপডেট করা একেবারে নিঃসন্দেহে কখনও যায় না । এই কমান্ড লাইন সত্যিই corrupts ব্যবহারকারী জন্য উইন্ডোজ রেজিস্ট্রি যুক্ত করে ব্যবহারকারী স্ট্রিং সেরা ক্ষেত্রে। এই কমান্ড লাইনটি ব্যবহার করা প্রত্যেকে ব্যবহারকারীর সেটিংটিকে সফলভাবে দূষিত করেছে এবং উইন্ডোজ পুনরায় চালু বা লগঅফ / লগনের পরে বর্তমান ব্যবহারকারীর অ্যাকাউন্টের সাথে চলমান সমস্ত প্রক্রিয়া দ্বারা ব্যবহৃত স্থানীয় হিসাবে এটি কার্যকর। PATH PATH PATH PATHc:\my-user-specifc-bin-path-which-may-contain-spaces;%C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;% PATH PATH
মফি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.