그냥 저녁시간 가벼운 잡담입니다.

인코딩 하시는 분들 중 시리즈물을 한번에 인코딩 하는 경우 동일한 스크립트를 숫자만 바꿔서 연달아 작성해야 하는데 이게 여간 불편한게 아닙니다. 메모장으로 숫자만 바꿔서 다른 이름으로 저장하기를 반복해야 하니까요. 그래서 제가 생각해봤는데 for 구문과 echo 명령어를 활용하면 손쉽게 해결할 수 있습니다.

일단 아래와 같이 단순한 AVS 스크립트를 예로 들어 보겠습니다.

DirectShowSource("1.grf", fps=23.976, audio=false)
crop( 2, 0, -2, 0)
LanczosResize(1280,720)


위와 같은 스크립트를 2.grf, 3.grf, 4.grf, ... 에 대하여 반복해서 계속 만들어야 한다면 매우 귀찮겠지요. 20.grf 까지 있다고 가정하고 1.avs부터 20.avs까지 만들어 보겠습니다.

@echo off
for /L %%a in (1,1,20) do echo DirectShowSource("%%a.grf", fps=23.976, audio=false) > %%a.avs
for /L %%a in (1,1,20) do echo crop( 2, 0, -2, 0) >> %%a.avs
for /L %%a in (1,1,20) do echo LanczosResize(1280,720) >> %%a.avs
exit


위와 같이 스크립트를 작성하여 CMD 파일로 저장한 다음 실행하면 20개의 avs 파일이 순식간에 생성됩니다.

for 다음에 있는 /L 옵션은 괄호 안의 (1,1,20)과 관련이 있습니다. (1,1,20)은 1부터 1을 더해가면서 20까지 반복한다는 말입니다. 만약 (5,-1,0) 이라고 적으면 5, 4, 3, 2, 1, 0을 의미하겠지요?

%%a는 제가 적은 임의의 변수인데 일반 커맨드에선 %를 1개만 쓰고 배치스크립트에선 2개를 사용합니다.

끝에 %%a.avs로 출력을 해주는데 > 한개는 기존 파일이 있어도 새로 덮어쓰게 되고 >> 두개는 기존 파일이 있으면 내용을 추가하게 됩니다.

무슨소린지 잘 모르시는 분들도 계시겠지만 그냥 저렇게도 할 수 있다는 잡담이었습니다.