CODEKILLER

반응형

도스 빈 배치파일을 하나 생성하여 

아래의 코드를 변수를 set하고 종료하는 배치를 테스트해볼 수 있습니다.

rem ---기본 변수  ----------
    set sting=%cd%
    set sting=%DATE%
    set sting=%TIME%
    set sting=%RANDOM%
    set sting=%ERRORLEVEL%
    set sting=%CMDEXTVERSION%
    set sting=%CMDCMDLINE%     
pause
goto l_end

rem --- 요기는 다른 필요작업이 있으면 넣습니다.

:l_end

▶ 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의 나머지 부분의 첫 문자열까지의 
모든 문자열을 일치시킵니다.

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

    set MINPATH = %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% - 명령 프로세서를 호출하는 원본 명령줄로
    확장합니다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band