[batch] 문법

springkim·2020년 11월 9일
0

1. 함수 반환값

배치 파일에서는 최대 10개의 함수 반환값을 가질 수 있다.
인자로써 %~1 부터 %~9 까지의 값을 사용할 수 있다.
이때 해당 값에 그냥 값을 대입하기만 하면 된다.
C++로 예시를 들자면, 참조값이 들어온다고 생각하면 된다.
아래는 디렉터리에서 원하는 폴더 또는 파일명을 알아오는 간단한 함수의 예시이다.

::Param 1 : dir
::Param 2 : match string
::Param 3 : not match string
::Param 4 : return value
:GetDirName
pushd %CD%
dir /B > "%TEMP%\dir.txt"
powershell "get-content %TEMP%\dir.txt -ReadCount 1000 | foreach { $_ -match '%~2' } | out-file -encoding ascii %TEMP%\dir_match.txt"
::without RC version
powershell "get-content %TEMP%\dir_match.txt -ReadCount 1000 | foreach { $_ -notMatch '%~3' } | out-file -encoding ascii %TEMP%\dir_notmatch.txt"
set /p "value="<"%TEMP%\dir_notmatch.txt"
set %~4=%value%
popd
exit /b

사용법은

call :GetDirName "." "contrib" "null" contrib_dir
echo %contrib_dir%

2. 문자열 substr 여부

if not x%str:bcd=%==x%str% (
    echo It contains bcd
)

원리는 str에서 bcd를 없애고 난후 원본 문자열과 비교해 보는것이다, 다르다면 성공적으로 지워진것이니 bcd를 포함하는것이다.

profile
Researcher & Developer @ NAVERCORP | Designer @ HONGIK Univ.

0개의 댓글