쉘[도스] [도움말 캡쳐] SET

황제낙엽 2020.05.21 18:23 조회 수 : 700

sitelink1  
sitelink2  
sitelink3  
extra_vars6  

C:\Users\7>set /?

cmd.exe 환경 변수를 보여주거나 설정하거나 지웁니다.

 

SET [변수=[문자열]]

 

  변수      환경 변수 이름을 지정합니다.

  문자열    변수에 할당할 문자열을 지정합니다.

 

매개 변수 없이 'SET'이라고 입력하면, 현재 환경 변수를 볼 수 있습니다.

 

명령 확장을 사용하면 SET는 아래와 같이 바뀝니다.

 

SET 명령은 변수 이름만으로 호출되며, = 기호나 값으로

그 변수의 값을 표시하지는 않습니다. 예를 들어,

 

    SET P

 

는 문자 'P'로 시작되는 모든 변수를 표시합니다.

 

SET 명령은 변수 이름을 현재 환경에서 찾을 수 없으면

ERRORLEVEL을 1로 설정합니다.

 

SET 명령에서는 환경 변수 이름에 = 기호를 사용할 수 없습니다.

 

SET 명령에는 아래와 같이 새로운 두 개의 스위치가 추가됩니다.

 

    SET /A 표현식

    SET /P 변수=[promptString]

 

/A 스위치는 = 기호의 오른쪽에 있는 문자열이

수식임을 지정합니다. 이는 계산되어 문자열로 변환되거나

지정한 변수의 새 값으로 만들어진 결과입니다.

표현식 평가기는 매우 간단하며 아래 연산을 지원합니다.

 

    ()          - 그룹 짓기

    ! ~ -               - 단일 연산자

    * / %               -  산술 연산자

    + -                 - 산술 연산자

    << >>               - 논리 이동

    &                   - 비트단위 and

    ^                   - 비트단위 상호 배제 or

    |                   - 비트단위 or

    = *= /= %= += -=    - 할당

      &= ^= |= <<= >>=

    ,                   - 식 구분 기호

 

논리 연산자를 사용하면 표현식 문자열을 인용 부호로 묶어야

합니다.  표현식에서 숫자가 아닌 문자열은 환경 변수 문자열로

취급하며, 그 값은 사용하기 전에 숫자로 변환됩니다. 환경 변수 이름이

지정되었지만 현재 환경에서 정의되지 않았으면 0 값이 사용됩니다.

이렇게 하면 환경 변수 값을 가져오기 위해 % 기호를

모두 입력할 필요 없이 환경 변수 값으로 산술 연산을 수행할 수

있습니다. 명령 스크립트 밖의 명령줄에서 SET /A를 실행하면,

표현식의 마지막 값이 표시됩니다. 할당 연산자의 왼쪽에

환경 변수 이름이 있어야 합니다.  숫자 값은 아무 접두어가 없으면

십진수이며, 접두어 0x는 16진수, 0은 8진수를

나타냅니다. 그러므로 0x12, 18은  022와 같습니다.

8진수는 혼동될 수 있다는 것에 주의하십시오: 08과 09는

 8, 9가 올바른 8진수가 아니므로 잘못된 수 입니다.

 

/P 스위치는 변수의 값을 사용자가 입력한 입력 줄에 설정하도록

허용합니다. 입력 줄을 읽기 전에 지정한 promptString을 표시합니다.

PromptString을 비워 둘 수 있습니다.

 

환경 변수 대체를 다음과 같이 확장했습니다:

 

    %PATH:str1=str2%

 

은(는) "str2" 문자열을 가진 확장된 결과에 나타나는 각 "str1" 문자열을

대체하는 PATH 환경 변수를 확장합니다. 확장된 출력에 나타나는 모든

"str1" 문자열을 효과적으로 삭제하기 위해 "str2" 문자열을 비어둘 수

있습니다. "str1" 문자열이 별표(*)로 시작할 수 있습니다. 이 경우에는

확장된 출력의 시작 부분에서부터 str1의 나머지 부분의 첫 문자열까지의

모든 문자열을 일치시킵니다.

 

또한 확장용 하위 문자열을 지정할 수 있습니다.

 

    %PATH:~10,5%

 

은(는) PATH 환경 변수를 확장한 다음 확장된 결과의 11(10 오프세트)번째

문자에서 시작한 5 문자만 사용합니다. 길이를 지정하지 않으면 기본값을

변수 값의 나머지로 지정합니다. 두(오프세트 또는 길이) 수 모두 음수이면,

사용한 수는 오프세트 또는 지정한 길이에 추가된 환경 변수 값의

길이입니다.

 

    %PATH:~-10%

 

은(는) PATH 변수의 마지막 10 문자를 추출합니다.

 

    %PATH:~0,-2%

 

은(는) PATH 변수의 2 문자만 제외한 모든 문자를 추출합니다.

 

지연된 환경 변수 확장명에 대한 지원이 추가되었습니다.  이 지원은 항상

기본적으로 사용할 수 없지만 /V 명령줄을 CMD.EXD로 전환하여 사용할 수 있거나

사용할 수 없게 될 수 있습니다.  CMD /?를 참조하십시오.

 

지연된 환경 변수 확장명은 텍스트의 줄을 실행할 때가 아니라

읽을 때 발생한 현재 확장명의 한계를

극복하는데 유용합니다.  다음 예제는

직접 변수 확장명에 나타나는 문제를 보여줍니다:

 

    set VAR=before

    if "%VAR%" == "before" (

        set VAR=after

        if "%VAR%" == "after" @echo If you see this, it worked

    )

 

양쪽 IF 설명에 있는 %VAR%가

첫 번째 IF 설명을 읽을 때 대체되고

논리적으로 복합문인 IF의 본문을 포함하기 때문에 메시지를

표시하지 않습니다. 그래서 복합문에 있는 IF가 결코 같을 수 없는

"before"과 "after"를 비교하고 있습니다.  유사하게, 다음 예제는

예상한 것처럼 작업하지 않습니다:

 

    set LIST=

    for %i in (*) do set LIST=%LIST% %i

    echo %LIST%

 

현재 디렉터리에 파일 목록을 만들지 않지만,

대신 LIST 변수를 최근에 찾은 파일에 설정합니다.

다신 한번, 이것은 %LIST% 변수가 FOR 설명을 읽을 때

한번 확장되었고 그때 LIST 변수가 비었기 때문입니다.

실행하고 있는 실제 FOR loop는:

 

    for %i in (*) do set LIST= %i

 

이것은 LIST를 최근에 찾은 파일에 설정합니다.

 

 지연된 환경 변수 확장명은 실행 시간에 환경 변수를

확장하도록 다른 문자(느낌표)를 사용하도록

허용합니다.  지연된 변수 확장명을 사용할 수 있으면,

위의 예제가 의도된 대로 다음과 같이 작업하도록 쓰여질 수 있습니다:

 

    set VAR=before

    if "%VAR%" == "before" (

        set VAR=after

        if "!VAR!" == "after" @echo 이렇게 되면

    )

 

    set LIST=

    for %i in (*) do set LIST=!LIST! %i

    echo %LIST%

 

명령 확장을 사용하면 확장될 수 있으나 SET에 의해

표시되는 변수 목록에 나타나지 않는 몇몇의

동적 환경 변수가 있습니다. 이 변수 값은

변수 값이 확장될 때마다 동적으로 계산됩니다.

사용자가 변수를 이 이름 중 하나로 분명하게 정의하면

이 정의가 아래에 설명된 동적 변수를 무시합니다:

 

%CD% - 현재 디렉터리 문자열로 확장합니다.

 

%DATE% - DATE 명령과 같은 포맷을 사용하여 현재 날짜로 확장합니다.

 

%TIME% - TIME 명령과 같은 포맷을 사용하여 현재 시간으로 확장합니다.

 

%RANDOM% - 0과 32767 사이에 있는 임의 숫자로 확장합니다.

 

%ERRORLEVEL% - 현재 ERRPRLEVEL 값으로 확장합니다

 

%CMDEXTVERSION% - 현재 명령 프로세서 확장자 버전 번호로

    확장합니다.

 

%CMDCMDLINE% - 명령 프로세서를 호출하는 원본 명령줄로

    확장합니다.

 

%HIGHESTNUMANODENUMBER% - 이 컴퓨터의 최고 NUMA 노드 수로

    확장합니다.

번호 제목 sitelink1 글쓴이 날짜 조회 수
» [도움말 캡쳐] SET   황제낙엽 2020.05.21 700
162 [문법] 배치 명령어 기초 작성법 file https://www.snoopybox.co.kr/1404  황제낙엽 2020.05.21 832
161 도스 배치 사용법 https://sh1n2.tistory.com/entry/DOS-%EB%...9%EC%96%B4  황제낙엽 2020.05.21 757
160 문서 파일의 내용을 쉘프로그램 변수에 담기   황제낙엽 2020.05.21 730
159 시스템 오류 1219이(가) 생겼습니다. (net use) file   황제낙엽 2020.03.13 1235
158 .NET Framework 3.5 설치오류 (0x800F081F) 해결방법(Windows 10) file https://blog.naver.com/sanghun0011/221664681482  황제낙엽 2020.02.27 867
157 프로세스 강제 종료 명령어(taskkill)   황제낙엽 2019.12.31 797
156 윈도우 인증서관리 확인하기 file   황제낙엽 2019.10.11 932
155 인증 오류가 발생했습니다(코드:0x800706be) file https://answers.microsoft.com/en-us/wind...a3b73f86d8  황제낙엽 2019.10.01 1060
154 Can't use copy paste In Windows 10 (Clear your clipboard) https://www.drivereasy.com/knowledge/sol...t-working/  황제낙엽 2019.08.19 1409
153 WinSCP free ftp 클라이언트 프로그램 + DOS bat 파일로 파일 업로드 https://blog.edit.kr/entry/WinSCP-free-f...8%EB%9E%A8  황제낙엽 2019.07.26 1181
152 defaultuser0 <- 수상한 계정 file https://answers.microsoft.com/en-us/wind...9cd?auth=1  황제낙엽 2019.07.22 4450
151 windows 10 안전모드 부팅 file   황제낙엽 2019.07.19 943
150 wscript 와 cscript   황제낙엽 2019.07.19 798
149 Malware Zero Kit (MZK) - 보조 악성코드 제거 스크립트 file http://mzk.co.kr  황제낙엽 2019.06.11 879
148 윈도우 10 시작 프로그램 폴더   황제낙엽 2019.06.03 972
147 윈도우 7~10 의 바탕화면 보기 기능의 단축키   황제낙엽 2019.04.18 756
146 윈도우 터치 키보드 비활성화하기 https://msparkms.tistory.com/entry/윈...화-끄기  황제낙엽 2019.04.15 864
145 inspect.exe (for win10) https://www.omnibuscode.com/board/index...._srl=52344  황제낙엽 2019.02.11 1705
144 64bit x86 PC Window {우분투 리눅스 (QEMU로 arm64 커널을 에뮬레이션)} file http://jake.dothome.co.kr/qemu/  황제낙엽 2018.11.27 1987