আমি উইন্ডোজ শেল সেশন থেকে সমস্ত পরিবেশের ভেরিয়েবল কীভাবে সাফ করব?


12

যদি আমি একটি নতুন উইন্ডোজ শেল সেশন শুরু করি এবং টাইপ করুন:

env

আমি প্রচুর পরিবেশের ভেরিয়েবল সেট দেখছি। আমি বর্তমান শেল সেশন থেকে সমস্ত পরিবেশের ভেরিয়েবল অপসারণ করে একটি কমান্ড লাইন প্রোগ্রামের চলমান ডিবাগ করতে চাই ।

নিম্নলিখিত পদ্ধতির সাথে আমি এক এক করে যেতে পারি:

SET FOO=
SET BAR=
SET ... ... ...

তবে কী একসাথে সবগুলি সাফ করার সহজ উপায় আছে?


1
কী env? আমি এর আগে কখনও শুনিনি, এবং এটি এখানে কার্যকর হয় না।
প্যারাড্রয়েড

উত্তর:


14

আপনি এটি একটি ব্যাচ ফাইলে লিখতে পারেন:

@echo off
if exist ".\backupenv.bat" del ".\backupenv.bat"
for /f "tokens=1* delims==" %%a in ('set') do (
echo set %%a=%%b>> .\backupenv.bat
set %%a=
)

এটি মূলত প্রতিটি এনভায়রনমেন্ট ভেরিয়েবলের মধ্য দিয়ে চলে, তাদের ব্যাচ ফাইলের ব্যাক আপ করে ( backupenv.bat) এবং তারপরে প্রতিটি ভেরিয়েবল সাফ করে। এগুলি পুনরুদ্ধার করতে আপনি backupenv.batফাইলটি চালাতে পারেন ।


এটা অসাধারণ. ধন্যবাদ! একটি ছোট জিনিস: ব্যাকআপেনভ.ব্যাট ফাইলটি প্রতি এসইটি এ = বি লাইনের শেষে 2 টি পিছনের স্থান রয়েছে বলে মনে হয়। এটি পুনরুদ্ধার করতে কিছু ভেরিয়েবল স্ক্রু আপ বলে মনে হচ্ছে।
TiGz

%% A = %% খ অনুসরণ করে স্থান সরানো হয়েছে, সম্পাদিত উত্তর দেখুন। এখন ঠিক থাকতে হবে।
গাফ 16

যা দুটি স্পেসের মধ্যে একটি থেকে মুক্তি পেয়েছে ... প্রতিটি এসইটি লাইনের শেষে একটি স্পেস থেকে যায়। যা অদ্ভুত।
টাইগজ 16

আপনি যখন আমার পূর্বে (কিছুটা ভাঙা) স্ক্রিপ্টটি চালিয়েছিলেন তখন থেকেই সম্ভবত স্থানটি যুক্ত করা হয়েছিল এবং আপনি পুনরুদ্ধার করার জন্য ব্যাচটি চালিয়েছিলেন ... এভাবে প্রতিটি চলকটিতে একটি স্থান যুক্ত করা হয়? তারপরে আপনি এটি আবার চালিয়েছেন এবং আউটপুটে এটিতে দুটি স্থান থাকবে? যদি এটি হয় তবে আপনার স্পেসের সাথে আগে সমস্ত ভেরিয়েবলের প্রত্যয় যুক্ত করার জন্য দুঃখিত। পরিষ্কার করা সহজ হওয়া উচিত।
গাফ

নাহ - আমি প্রতিবার একটি নতুন শেল খুলছিলাম। এটি ব্যবহার করে দেখুন ... আপনি কি অতিরিক্ত জায়গা দিয়ে শেষ করবেন না?
টাইগজ

6

আপনি যদি কেবল ব্যাচ ফাইলের জন্য সমস্ত পরিবেশের ভেরিয়েবল সাফ করতে চান তবে এটি আরও সহজ হয়ে যায়।

@echo off
Setlocal enabledelayedexpansion
Set >set

For /F "tokens=1* delims==" %%i in (set) do set %% %i=
Del set
Set

চূড়ান্ত লাইনটি পরিবেশের সমস্ত ভেরিয়েবলকে আউটপুট দেয়, যা কোনওটিই নয়, কোডটি কাজ করে তা নিশ্চিত করে।

যেহেতু Setlocalব্যবহৃত হয়, সমস্ত পরিবেশ পরিবর্তনগুলি ব্যাচ শেষ হওয়ার পরে হারিয়ে যায়। সুতরাং আপনি যদি Setব্যাচের পরে টাইপ করেন তবে আপনি দেখতে পাবেন যে সমস্ত পরিবেশের ভেরিয়েবলগুলি এখনও আছে তাই এটি ব্যাকআপ ফাইলে সংরক্ষণ করার দরকার নেই।


কোড ফর্ম্যাটিং ব্যবহার করার জন্য দয়া করে কিছু চেষ্টা করুন। এটি জিনিসগুলিকে অনেক বেশি পাঠযোগ্য করে তোলে।
বক্সস্পাহ

গৃহীত উত্তর এর চেয়ে ভাল কারণ অন্য উত্তরগুলির বিদ্যমান ব্যাকআপের একটি উপায় রয়েছে
সানক্ল্যাচ

@ সানক্লিট আপনার আমার সম্পূর্ণ মন্তব্যটি পড়তে হবে। এটি বলে যে এই ক্ষেত্রে ব্যাকআপের দরকার নেই।
অ্যারন লো

@ স্ক্রিথেরো আমি বর্তমানে পোস্টগুলি ফর্ম্যাট করতে পারছি না, দুঃখিত
হারুন লো

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