Windows 셸 세션에서 모든 환경 변수를 지우려면 어떻게해야합니까?


12

새 Windows 셸 세션을 시작하고 다음을 입력하면 :

env

많은 환경 변수가 설정되어 있습니다. 현재 쉘 세션에서 모든 환경 변수를 제거하여 명령 행 프로그램 실행을 디버그하고 싶습니다 .

다음과 같은 접근 방식으로 하나씩 갈 수 있습니다.

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

그러나 한 번에 모두를 지우는 간단한 방법이 있습니까?


1
무엇입니까 env? 전에는 들어 본 적이 없으며 여기서 작동하지 않습니다.
paradroid

답변:


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파일을 실행할 수 있습니다 .


대단하다. 감사! 한 가지 작은 것 : backupenv.bat 파일은 모든 SET A = B 줄 끝에 2 개의 후행 공백이있는 것 같습니다. 이것은 복원시 일부 변수를 망쳐 놓는 것 같습니다.
TiGz

%% a = %% b 다음의 공백을 제거했습니다. 편집 된 답변을 참조하십시오. 지금은 괜찮을거야.
Gaff

두 공간 중 하나를 제거했습니다 ... 각 SET 행의 끝에 하나의 공간이 남아 있습니다. 이상하다.
TiGz

아마도 이전에 (약간 깨진) 스크립트를 실행할 때 공간이 추가되었고 배치를 실행하여 복원했습니다 ... 각 변수에 공간을 추가합니까? 그런 다음 다시 실행하면 출력에 두 개의 공백이 있습니까? 이 경우 이전에 모든 변수에 공백을 접미어로 사용하여 죄송합니다. 그래도 정리하기 쉬워야합니다.
Gaff

아냐-매번 새로운 껍질을 열고 있었다. 시도해보십시오 ... 여분의 공간으로 끝나지 않습니까?
TiGz

6

배치 파일의 모든 환경 변수 만 지우려면 훨씬 쉬워집니다.

@echo off
Setlocal enabledelayedexpansion
Set >set

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

마지막 줄은 모든 환경 변수를 출력합니다.이 변수는 없어야하며 코드가 작동했음을 확인합니다.

Setlocal이 사용 되므로 배치가 종료 된 후 모든 환경 변경 사항이 손실됩니다. 따라서 Set배치 후에 입력 하면 모든 환경 변수가 여전히 남아 있으므로 백업 파일에 저장할 필요가 없습니다.


코드 형식을 사용하기 위해 노력하십시오. 일을 훨씬 더 읽기 쉽게 만듭니다.
boxspah

다른 답변이 기존 백업 방법을 가지고 있기 때문에 허용 된 답변이 이것보다 낫습니다
SeanClt

@SeanClt 내 전체 의견을 읽어야합니다. 이 경우 백업이 필요하지 않다고합니다.
Aaron Lowe

@scripthero 현재 게시물을 포맷 할 수 없습니다. 죄송합니다
Aaron Lowe

네 맞아
SeanClt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.