배치(.bat)파일을 IF문 이용하여 작성하기(스크립트).

Windows 2014. 2. 13. 18:03

패치파일을 이용하여 자동 스크립트를 작성하기 위해

조건문인 IF는 필수로 들어 가게 됩니다.

 

프로그래밍을 기초라도 잠깐 보신분이라면 쉽게 사용하실 수 있지만

햇갈리는 부분이 간혹있기에 이렇게 포스팅 합니다.

 

먼저 간단한 예제를 보자면 다음과 같습니다.

@echo off

:Start
echo 웹서비스 프로그램을 설치한 경로를 입력해주세요.(ex. C:\web\)
SET /P web=입력 :

IF "%web%"=="" GOTO Error
IF exist "%web%" (
 echo "%web%" 항목을 찾았습니다.
 echo 결과는 아래와 같습니다.
 dir %web%
) else (
 echo "%web%" 항목을 찾을 수 없습니다.
)


GOTO End

:Error
ECHO 다시입력해주세요.


GOTO Start
:End
SET /P re=다시 입력 하시겠습니까?[Y/N] :

IF "%re%"=="y" (
 GOTO Start
) else (
 echo 종료합니다!
)

pause > null

 

첫번째로 echo 에 대해 먼저 알아 보겠습니다.

@echo는 에코 서비스를 설정을 하는 명령어 이며 이후 실행되는 명령어에 대해 화면에 표시되도록 해줍니다.

그림으로 보는게 이해가 가장 빠를거라 생각 되네요.

 

  • echo 설정 화면

    @echo
    dir c:\test\

     

    echo.
    echo.


    pause

     

    - 실행 결과

     

     

    • echo off 설정 화면

    @echo off
    dir c:\test\

    echo.
    echo.


    pause

     

    -실행 결과

     

     

    추가로 echo. 은 cmd 창에서 줄 바꿈의 기능을 수행합니다.

    pause는 실행 후 화면을 일시정지 상태 "계속하려면..." 메시지를 나타내 줍니다.

     

    두번째로는 레이블 ( : 표시) 입니다.

    간단하게 주소라고 생각하시면 되고 GOTO 명령어와 함께 사용됩니다.

    가장 위의 예제에서 보면 " GOTO :Start " 라고 있는 부분은 해당 레이블이 있는 행으로 이동하라는 의미가 됩니다.

     

    세번째는 환경 변수입니다.

    SET 이라는 명령어를 실행하면 시스템에 등록되어있는 환경변수를 확인해 볼 수 있습니다.

    SET /P 변수명=[promptString]

    이와 같은 형식으로 사용하며 /P 옵션을 사용하여 사용자의 입력을 받습니다.

    입력값은 환경변수(본문에서는 web에 해당)에 임시저장되며, 이러한 환경변수는 %변수명% 을 이용하여 불러올 수 있습니다.

     

    일례로 cmd에서 현재 어느 위치에 있건 c:\windows로 이동을 하고 싶다면 아래와 같이 해주시면 됩니다.

     

     

    환경 변수... 많이 들어본 단어죠..

    여기에서 확인도 가능 합니다.

     

     

     

     

    다음은 가장 중요한 IF 입니다.

    간단하게는 아래와 같은 형식으로 사용합니다.

    IF [조건연산자] [조건] 실행명령어 

     

    *조건 연산자

    EQU - 같음          
    NEQ - 같지 않음     
    LSS - 보다 작은        
    LEQ - 작거나 같음
    GTR - 보다 큰
    GEQ - 크거나 같음

     

     

    if /?

     

    배치 파일에서 조건 처리를 수행합니다.

    IF [NOT] ERRORLEVEL 숫자 명령어
    IF [NOT] 문자열1==문자열2 명령어
    IF [NOT] EXIST 파일이름 명령어

      NOT               조건이 거짓이면 명령을 수행하라고 지정합니다.

      ERRORLEVEL 숫자   마지막 프로그램 실행에서 반환된 마침 코드가
                        지정된 숫자보다 크거나 같으면, 조건을 참으로 지정합니다.

      문자열1==문자열2  지정된 문자열이 일치하면 조건을 참으로 지정합니다.

      EXIST 파일이름    지정된 파일이름이 있으면 조건을 참으로 지정합니다.

      명령어            조건이 만족되면 실행할 명령을 지정합니다.
                        지정된 조건이 FALSE인 경우에는
                        ELSE 키워드 다음에 명령을 수행할
                        ELSE 명령어가 따릅니다.

    ELSE 구문은 IF 명령 다음의 명령줄과 동일한 행에 위치해야 합니다.
    예:

        IF EXIST filename. (
            del filename.
        ) ELSE (
            echo filename. missing.
        )

     

    IF문의 가장 중요한 부분은 위에 주황색 표시된 부분입니다.

    줄 안바꿔 주면 오류납니다 ㅎㅎ

     

     

    마지막 pause > null 은 실행한 결과값을 null로 보내라는 뜻으로 쓰레기통에 버린다고 생각하시면 되겠네요.

     

    허접하지만 글이 너무 길어서 이만...

     

    익스플로러 파일 다운로드 차단 해제 하기

    일반 2014. 2. 9. 15:17

    익스플로러를 사용하다보면 익스플로러가 다운로드를 차단하여 불편한 경우가 많습니다.

    또한, 이메일에 첨부된 명세서 같은것도 열려고 할때 보안프로그램 설치와 더불어 무한 루프가 돌게되는 상황도 나오죠.

     

     

    파일다운로드 차단 해제하는 방법입니다.


    익스플로러 설정에서 사용자지정 클릭



    activeX 와 다운로드 설정 모두 "사용" 으로 설정.

    사진은 설정 전 화면입니다.




    Windows 드라이브 및 폴더 권한 가져오기

    Windows 2014. 2. 6. 09:10

    PC에 잡다한게 너무 많이 깔려서 한번 포멧을 하고...

    윈도우 설치시에 administrator를 활성화를 진행한 다음, 기본 계정으로 사용하고 싶지 않았기에

    로컬 정책에서 administrator의 이름을 변경 하였더니 C:\는 멀쩡히 권한이 위임 된 반면

    D:\의 권한이 엉망이 되었습니다. 내 것인데 내것이라고 하지 못하고!!

    분명 계정명도 원래대로 수정하고 그룹에도 포함이 되어 있는데 자료 삭제도 못하고 자꾸 administrators에서 권한을 받아야 한다고 ㅠㅠ

     

    위와 같이 대략 난감한 상황~!

    XP같은 경우에는 cmd창에서 at 명령어를 이용하여 SYSTEM 계정으로 로그인할 수도 있었지만

    지금 7 에서는 안되더군요.

    본론으로 들어가서!

    구글에서 검색했지만 폴더는 권한을 가져오는데 드라이브(예: D:\)의 권한은 가져올 수 없더군요.

    여기저기 정보를 모아 정말 간단한 명령어가 들어가는 스크립트를 만들었습니다.

    하하하.. 만들고 보니 너무 간단해서 눈물이 날지경이네요. 얼마나 고생했는데..

    내용은 아래를 참조 하세요.

     

    위에서 보시는대로 직접 작성하셔서 실행해도 됩니다.

    다만! D:\ 를 저는 특정했기때문에 저부분을 변경해주셔야 합니다.

     

    스크립트 실행 결과 입니다.

     

    추가로 각 폴더별로 권한을 가져 올 수 있는 윈도우의 숨은(?)기능도 같이 첨부하려 합니다.

    레지스트리에 사진과 같은 경로에 입력해주시거나 첨부파일 실행하시면 됩니다.

     

    그럼 요로코롬 나타납니다.

     

     

    다들 소중한 자료를 지킵시다~!

    takeownership.zip

     

    권한가져오기.bat