배치 스크립트 - 입력 / 출력
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 배치 스크립팅의 매력적인 세계로 접어들어, 입력과 출력 연산에 중점을 둘 것입니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 이 여정을 안내해드리는 것을 기쁘게 생각합니다. 코드를 한 줄도 적지 않았다면 걱정하지 마세요 - 우리는 기본에서 시작하여 점진적으로 올라갈 것입니다. 그럼, 좋아하는 음료를 한 잔 들고, 시작해보겠습니다!
배치 스크립트에서 입력과 출력 이해하기
이제 구체적인 내용으로 넘어가기 전에, 배치 스크립트의 맥락에서 입력과 출력이 무엇을 의미하는지 이야기해보겠습니다.
- 입력은 스크립트로 들어가는 정보입니다. 프로그램에 데이터를 주는 것과 같습니다.
- 출력은 스크립트가 생성하거나 표시하는 것입니다. 스크립트의 작업 결과입니다.
이를 주방에 비유하면, 입력은 사용하는 재료이고, 출력은 만들어진 맛있는 요리입니다!
기본 입력: SET /P 명령어
배치 스크립트에서 입력을 받는 가장 일반적인 방법을 시작해보겠습니다: SET /P 명령어. 이 명령어는 사용자에게 입력을 요청하고 변수에 저장할 수 있게 해줍니다.
@echo off
SET /P name=이름은 무엇이세요?
echo 안녕하세요, %name%! 배치 스크립팅의 세계에 환영합니다!
pause
이 예제에서:
-
@echo off
는 명령어가 화면에 표시되지 않도록 합니다. -
SET /P name=이름은 무엇이세요?
는 사용자에게 이름을 입력하도록 요청하고name
변수에 저장합니다. -
echo 안녕하세요, %name%!
는 입력된 이름을 사용하여 인사를 출력합니다. -
pause
는 창을 열어 두어 결과를 볼 수 있게 합니다.
이 스크립트를 실행해보세요. 컴퓨터와 작은 대화를 나누는 것 같아 재미있을 겁니다!
기본 출력: ECHO 명령어
이미 ECHO 명령어를 사용해 본 적이 있을 것입니다. 이는 배치 스크립트에서 출력을 표시하는 주요 방법입니다. 조금 더 깊이 탐구해보겠습니다:
@echo off
echo 이것은 간단한 출력입니다.
echo.
echo 이 줄 위에 빈 줄이 있습니다.
echo "인용符"은 그대로 표시됩니다.
echo.
echo 현재 날짜: %date%
echo 현재 시간: %time%
pause
여기서 일어나는 일:
-
echo.
는 빈 줄을 출력합니다. -
echo
를 사용하여 텍스트, 변수, 그리고 날짜와 시간과 같은 시스템 정보를 표시할 수 있습니다.
출력을 리디렉션(Standard Output과 Standard Error)
이제 출력을 리디렉션하는 것에 대해 이야기해보겠습니다. 배치 스크립트에서는 두 가지 주요 출력 유형이 있습니다:
- 표준 출력 (stdout): 명령어의 일반 출력.
- 표준 오류 (stderr): 오류 메시지나 진단 출력.
이러한 출력을 파일로 리디렉션할 수 있습니다.
표준 출력을 리디렉션
@echo off
echo 이 내용은 파일에 저장됩니다 > output.txt
echo 이 내용은 파일에 추가됩니다 >> output.txt
type output.txt
pause
이 스크립트에서:
-
>
는 파일을 생성하거나 덮어쓰고 출력을 씁니다. -
>>
는 출력을 기존 파일에 추가하거나 파일을 생성합니다. -
type output.txt
는 파일의 내용을 표시합니다.
표준 오류를 리디렉션
오류 메시지를 리디렉션하려면 2>
를 사용합니다.
@echo off
dir 존재하지 않는 폴더 2> error.txt
type error.txt
pause
이 스크립트는 존재하지 않는 폴더를 목록에 보이려고 시도하고 오류 메시지를 파일로 리디렉션합니다.
표준 출력과 표준 오류를 동시에 리디렉션
양쪽 출력을 같은 파일로 리디렉션할 수 있습니다:
@echo off
dir 2>&1 > output.txt
type output.txt
pause
여기서 2>&1
은 "표준 오류를 표준 출력과 같은 곳으로 리디렉션"을 의미합니다.
프로그램 출력을 억제
때로는 명령어를 실행하지만 출력을 표시하지 않고 싶을 수 있습니다. 이를 위해 출력을 특별한 장치인 NUL로 리디렉션할 수 있습니다.
@echo off
echo 이 내용은 표시됩니다.
echo 이 내용은 표시되지 않습니다 > NUL
dir > NUL
echo 디렉토리 목록이 억제되었습니다.
pause
이 스크립트에서는 두 번째 ECHO 명령어와 DIR 명령어의 출력을 억제합니다.
고급 입력/출력 기술
이제 기본적인 내용을 다루고 나서, 더 고급 기술을 살펴보겠습니다.
사용자 입력을 위한 CHOICE 명령어
CHOICE 명령어는 사용자 입력을 받는 더 구조화된 방법을 제공합니다:
@echo off
echo 프로그래밍을 좋아하시나요?
choice /c YN /m "Y를 눌러 예, N를 눌러 아니요"
if errorlevel 2 goto No
if errorlevel 1 goto Yes
:Yes
echo 멋사워요! 더 배우겠습니다!
goto End
:No
echo 걱정하지 마세요, 곧 좋아하실 거예요!
:End
pause
이 스크립트는:
- 사용자에게 예/아니요 질문을 합니다.
-
/c YN
을 사용하여 유효한 선택지를 지정합니다. -
/m
을 사용하여 사용자에게 사용자 정의 메시지를 표시합니다. -
if errorlevel
을 사용하여 사용자의 선택을 확인하고 적절한 레이블로 이동합니다.
파일에서 읽기
파일에서 입력을 읽을 수도 있습니다:
@echo off
for /f "delims=" %%a in (input.txt) do (
echo 읽은 줄: %%a
)
pause
이 스크립트는 input.txt
파일의 각 줄을 읽고 표시합니다.
여러 파일에 쓰기
여러 파일에 쓰는 스크립트를 만들어보겠습니다:
@echo off
echo 파일 1 내용 > file1.txt
echo 파일 2 내용 > file2.txt
echo 파일 3 내용 > file3.txt
echo 파일이 성공적으로 생성되었습니다!
pause
이 스크립트는 세 개의 별도 파일을 생성하고 각각 다른 내용을 씁니다.
입력/출력 방법 요약
이제 배우고 배치 스크립트에서 사용한 입력/출력 방법을 요약하는 표를 만들어보겠습니다:
방법 | 설명 | 예제 |
---|---|---|
SET /P | 사용자 입력 가져오기 | SET /P name=Enter name: |
ECHO | 출력 표시 | echo Hello, World! |
> | 출력을 파일로 리디렉션 | echo Text > file.txt |
>> | 출력을 파일에 추가 | echo More text >> file.txt |
2> | 오류 출력을 파일로 리디렉션 | command 2> error.txt |
2>&1 | 표준 출력과 표준 오류를 동시에 리디렉션 | command > output.txt 2>&1 |
NUL | 출력 억제 | command > NUL |
CHOICE | 구조화된 사용자 입력 | choice /c YN /m "Yes or No?" |
FOR /F | 파일에서 읽기 | for /f "delims=" %%a in (file.txt) do ... |
여러분! 우리는 배치 스크립트의 입력과 출력 세계를 여행했습니다. 이 개념을 습득하는 열쇠는 연습입니다. 자신의 스크립트를 작성하고, 다양한 명령어를 실험하고, 실수를 두려워하지 마세요 - 그것이 우리가 배우는 방법입니다!
컴퓨터 교사가 항상 말하듯이, "프로그래밍에서 모든 오류는 가장 좋은 학습 기회의 가면입니다." 그러니 배치 스크립트를 작성하고, 출력이 항상 의도한 대로 나오기를 바랍니다!
Credits: Image by storyset