Windows kabuk oturumundaki tüm ortam değişkenlerini nasıl temizleyebilirim?


12

Yeni bir Windows kabuk oturumu başlatır ve şunu yazarsam:

env

Birçok ortam değişkeninin ayarlandığını görüyorum. Geçerli kabuk oturumundan tüm ortam değişkenlerini kaldırarak bir komut satırı programının çalışmasında hata ayıklamak istiyorum .

Aşağıdaki yaklaşımla tek tek gidebilirim:

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

Ancak hepsini tek seferde temizlemenin basit bir yolu var mı?


1
Nedir env? Bunu daha önce hiç duymadım ve burada işe yaramıyor.
paradroid

Yanıtlar:


14

Bunu bir toplu iş dosyasına yazabilirsiniz:

@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=
)

Temelde her ortam değişkeni üzerinden çalışır, bunları bir toplu iş dosyasına ( backupenv.bat) yedekler ve sonra her değişkeni siler. Bunları geri yüklemek için backupenv.batdosyayı çalıştırabilirsiniz .


Bu harika. Teşekkürler! Küçük bir şey: backupenv.bat dosyasında her SET A = B satırının sonunda 2 boşluk vardır. Bu, geri yüklemede bazı değişkenleri berbat ediyor gibi görünüyor.
TiGz

%% a = %% b sonrasındaki boşluk kaldırıldı, düzenlenen cevaba bakın. Şimdi iyi olmalı.
Gaff

Bu iki alandan birinden kurtuldu ... her SET çizgisinin sonunda bir boşluk kalıyor. Hangisi garip.
TiGz

Belki daha önce (biraz bozuk) komutumu çalıştırdığınızda alan eklendi ve geri yüklemek için toplu işi çalıştırdınız ... böylece her değişkene bir boşluk eklediniz mi? Sonra tekrar koştun ve çıktıda iki boşluğu olurdu? Bu durumda, daha önce tüm değişkenlerinizi boşlukla eklediğiniz için üzgünüm. Yine de temizlenmesi kolay olmalıdır.
Gaff

Hayır - Her seferinde yeni bir kabuk açıyordum. Deneyin ... fazladan bir alan bulmuyor musunuz?
TiGz

6

Yalnızca toplu iş dosyası için tüm ortam değişkenlerini temizlemek istiyorsanız, daha da kolaylaşır.

@echo off
Setlocal enabledelayedexpansion
Set >set

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

Son satır, çalışılması gereken kodu doğrulayan, hiçbiri olmaması gereken tüm ortam değişkenlerini çıkarır.

Çünkü Setlocalkullanıldığından, toplu iş bittikten sonra tüm ortam değişiklikleri kaybolur. Bu nedenle Set, toplu işten sonra yazarsanız, tüm ortam değişkenlerinin hala orada olduğunu ve dolayısıyla bir yedekleme dosyasında depolanmasına gerek olmadığını görürsünüz.


Lütfen kod biçimlendirmeyi kullanmak için biraz çaba gösterin. İşleri çok daha okunaklı hale getirir.
boxspah

kabul edilen cevap bundan daha iyidir, çünkü diğer cevap mevcut yedeklemenin bir yoluna sahiptir
SeanClt

@SeanClt Yorumumun tamamını okumanız gerekiyor. Bu durumda yedeklemeye gerek olmadığı söyleniyor.
Aaron Lowe

@scripthero Şu anda yayınları biçimlendiremiyorum, özür dilerim
Aaron Lowe

Evet haklısın
SeanClt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.