Windows Batch file 명령어

Tips 2017. 8. 16. 09:17


    - 도스(dos) 배치 파일(일괄처리 파일) 작성법

https://en.wikibooks.org/wiki/Windows_Batch_Scripting



* 입력 인자(Argument)
    %0 = 배치파일 자신, %1=1번째 인자...
   
    %~1 = 빈칸을 포함한 문자열을 따옴표로 묶어서 입력받음(따옴표는 제거됨)


%* = 모든 입력 인자



* 폴더 경로

%dp0 = 현재 bat 파일이 위치한 폴더 경로

echo %dp0파일  = 현재경로\파일




* 변수 설정
SET var1=변수 값


    - 숫자 계산
set /a var1=%a%+1


    * 특별값
    %CD%  : 현재 폴더 이름
    %TIME% : 시간


//===========
* 문자열 처리
set a=abcd
echo %a:~1,2%
    결과 : bc

echo %a:~-2%
    결과: cd
        - 확장자 추출


//=====================
* 한줄에 여러 명령

http://www.robvanderwoude.com/condexec.php

& : 한 줄에 여러 명령

&& : 이전 명령의 errorlevel이 '0' 이면 다음 명령실행

|| : 이전 명령의 errorlevel이 '0' 이 아니면 다음 명령실행



//===========
* CALL : 외부 배치파일이나 내부 함수 실행
@echo off & setlocal
set s=AAA BBB CCC DDD EEE FFF
call :sub1 %s%
exit /b

:sub1
if "%1"=="" exit /b
echo %1
shift
goto :sub1


* START : exe 파일 실행
    start /wait notepad.exe : 이전 실행된 프로그램의 종료를 기다림

* SHIFT : 입력 인자를 앞으로 민다

* EXIT
    exit /b : 현재 배치파일만 끝냄


* SETLOCAL : 환경변수를 변경한 경우 현재 배치파일에서만 영향


* PUSHD : 경로를 저장

pushd c:\user

pushd "%~dp0"   // 현재 배치파일 위치를 저장



* POPD : 경로 복원

- PUSHD로 저장된 경로로 이동


//===========
* GOTO
rem 따옴표 필요 주의
if "%~1"=="" goto :end1
.....
:end1


//===========
* IF

     - if 문 블록 ( ) 안에 if 를 쓰면 안된다. 무조건 실행됨

    - 문자열 비교시 양쪽에 모두 따옴표 권장
    - 비교인자가 비정의 상태( not defined) 상태이면 에러, %1 등에서 주의
if not "%4" == "30" echo not 30

    - 숫자 비교시 따옴표 해제
if  %4 geq 30 echo greater than 30

IF NOT EXIST '파일' GOTO NOWINDIR


* IF ELSE

- ELSE IF 문이 없음 , 다음의 방식으로 구현


IF "%1" == "" (

set option=2

) ELSE (

IF "%1" == "1" (

set option=

) ELSE (

set option=%1

)

)


중요!! - ELSE 앞뒤로 빈칸이 있어야 함




//============
* FOR
    - 폴더 파일 리스팅
for /r %%i in (*) do (
    @echo %%~ni
    @echo %%~xi
)
    /r : 하위폴더 포함
    /d : 폴더


//===================

* 키보드에서 문자열 입력 받기


@echo off

SET /P confirm=Please enter yes :

if "%confirm%" NEQ "yes" (

echo worng answer

exit /b

)

echo END




//===========
%~I                     Expands %I which removes any surrounding
                        quotation marks ("").
%~fI                    Expands %I to a fully qualified path name.
%~dI                    Expands %I to a drive letter only.
%~pI                    Expands %I to a path only.

%~nI                    Expands %I to a file name only.
%~xI                    Expands %I to a file extension only.

%~sI                    Expands path to contain short names only.
%~aI                    Expands %I to the file attributes of file.
%~tI                    Expands %I to the date and time of file.
%~zI                    Expands %I to the size of file.
%~$PATH:I               Searches the directories listed in the PATH environment


//===============

//참고

https://en.wikibooks.org/wiki/Windows_Batch_Scripting




반응형
Posted by codens codens

댓글을 달아 주세요