Windows

batch(배치함수) set 변수=문자열 > set 변수=변수

Naan 2013. 2. 27. 21:52
320x100


문자열을 만들어놓은 변수를 다시 변수로 만들기다. 말을 하니 어렵네.

svnlook을 이용한 예를 들겠다.

FOR /F "tokens=*" %%R IN ('"d:\bin\svnlook.exe" changed -r %rev% %repos%') DO ECHO %%R >>%tmpdir%

set tmpdir=test.log

위와 같이 지정을 한다면 test.log 파일에 svn changed 값이 들어갈것이다.


SET SUBJECT= [SVN] -r%REV% - %tmpdir%

위와 같이 설정후 메일을 보낸다면 메일 제목에 [SVN] -r1234 - test.log 로 찍혀서 발송될것이다.


그래서 test.log 내용을 메일 제목에 찍어서 보내려면 아래와 같이 하면 된다.

for /f "delims=" %%i in (d:\tmp\test.log) do set string=%%i

set string=%string%

위와 같이 설정을 하면 test.log 안에 있는 문자를 string 에 담을수 있다.


추가적으로 

findstr -n -i "test" d:\tmp\test.log > d:\util\tmp\log.tmp   ==> 만약에 특정 단어를 찾고 싶다면 findstr 함수를 이용하면 된다.

set string=%string:~-1%  ==> 이와 같이 옵션을 주면 첫번째 칸은 빼고 string 에 저장하는거다.



예를 들어보겠다.

test.log 파일 하나 만들고
svn
author
test
look
이라고 저장해놓고

이제 실행파일을 만들어보자
test.bat 에다가
echo off

findstr -n -i "author" d:\test.log > d:\log\author.log 
for /f "delims=" %%i in (d:\author.log) do set string=%%i
set string=%string%
echo %string%

도스창에에서 test.bat 를 누르면

위와 같이 찍힐것이다.

set string=%string:~1% 하면 첫번째줄 빼고 출력

:author 라고 찍힐것이고


echo off

for /f "delims=" %%i in (d:\test\test.log) do set string=%%i

set string=%string%%

echo %string%


이렇게 한다면 맨 마지막 줄인

look

만 찍히게 될것이다.




320x100