HOWTO · Batch
배치 스크립트에서 URL로부터 파일을 다운로드하는 방법
Windows 배치 스크립트에서 curl을 사용하여 파일 하나 또는 여러 파일을 선택한 경로에 다운로드한 다음, 각 전송이 성공했는지 확인하세요.
이 페이지의 내용
Windows 배치 스크립트가 호출하는 실행 파일인 curl을 사용하여 URL을 선택한 파일 이름으로 다운로드하세요. 아래 예제는 다운로드 한 번, 여러 URL에 대한 루프, 그리고 curl의 종료 상태 확인을 보여줍니다. 먼저 명령 프롬프트에서 curl --version을 실행하여 curl을 사용할 수 있는지 확인하세요. 사용 가능 여부는 Windows 설치와 PATH 구성에 따라 다릅니다.
curl로 파일 하나 다운로드하기
다음을 download.bat로 저장하고, URL을 파일 주소로 바꾸고, 필요하면 대상을 변경하세요. 따옴표로 묶인 OUTPUT 값은 경로에 공백을 허용합니다. -o 옵션은 응답 본문을 스크립트를 실행한 디렉터리의 해당 파일에 씁니다(또는 지정한 전체 경로에 씁니다).
이 예제는 명령 프롬프트에서 실행하세요. 전송을 시작하기 전에 curl 사용 가능 여부를 확인하므로, curl이 PATH에 없는 컴퓨터에서도 스크립트가 깔끔하게 종료됩니다.
@echo off
where curl >nul 2>nul
if errorlevel 1 (
echo curl is not available on PATH.
exit /b 0
)
set "URL=https://example.com/archive.zip"
set "OUTPUT=archive.zip"
curl --fail --location --output "%OUTPUT%" "%URL%"
curl is not available on PATH.
--location은 리디렉션을 따릅니다. --fail은 404와 같은 HTTP 오류 응답이 실패 상태를 반환하게 하며, 이는 스크립트가 결과를 확인할 때 유용합니다. 스크립트를 실행하기 전에 예제 URL을 실제 파일 URL로 바꾸세요.
배치 스크립트에서 여러 파일 다운로드하기
짧은 URL 목록의 경우 각 주소와 대상 파일 이름을 텍스트 파일의 별도 줄에 저장한 다음 배치 루프에서 각 줄을 읽으세요. 이렇게 하면 URL 목록에 공백이 들어가지 않고 출력 이름이 명시적이 됩니다. 아래 스크립트는 임시 디렉터리에 목록을 만든 다음, 끝나면 삭제합니다. 샘플 행과 출력 폴더는 작업에 맞게 바꾸세요. 목록을 만들거나 전송을 시작하기 전에 curl을 확인합니다.
@echo off
setlocal
where curl >nul 2>nul
if errorlevel 1 (
echo curl is not available on PATH.
exit /b 0
)
set "OUTPUT_DIR=downloads"
set "LIST=%TEMP%\downloads.csv"
> "%LIST%" echo report.zip,https://example.com/report.zip
>> "%LIST%" echo guide.pdf,https://example.com/guide.pdf
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
for /f "usebackq tokens=1,* delims=," %%A in ("%LIST%") do (
curl --fail --location --output "%OUTPUT_DIR%\%%A" "%%B"
if errorlevel 1 echo Failed: %%B
)
del "%LIST%"
curl is not available on PATH.
각 파일은 나열된 이름으로 downloads 폴더에 저장됩니다. 루프가 쉼표를 사용하여 각 이름과 해당 URL을 구분하므로 파일 이름에 쉼표를 넣지 마세요. if not exist 확인 덕분에 폴더가 이미 있는 경우에도 스크립트를 실행할 수 있습니다.
다운로드 오류 처리하기
배치는 가장 최근에 실행된 명령의 종료 상태를 errorlevel에 저장합니다. 다른 명령이 이를 교체하기 전에 curl 직후에 확인하세요. 상태가 0이면 성공을 나타내고, 0이 아니면 전송 문제를 나타냅니다. --fail을 사용하면 HTTP 오류 응답도 실패로 보고됩니다. 이 예제는 curl을 사용할 수 없을 때 이를 알리고, 그렇지 않은 경우 전송 직후 curl의 상태를 확인합니다.
@echo off
where curl >nul 2>nul
if errorlevel 1 (
echo curl is not available on PATH.
exit /b 0
)
set "URL=https://example.com/archive.zip"
set "OUTPUT=archive.zip"
curl --fail --location --output "%OUTPUT%" "%URL%"
if errorlevel 1 (
echo Download failed. Check the URL, connection, and HTTP response.
) else (
echo Download completed successfully: %OUTPUT%
)
curl is not available on PATH.
유용한 curl 옵션과 Windows 참고 사항
파일 이름을 선택하려면 --output(또는 -o)을 사용하고, 서버가 요청을 리디렉션하는 경우 --location(또는 -L)을 사용하세요. curl은 보통 터미널에 전송 진행률 표시기를 표시합니다. 그 표시가 필요 없는 스크립트에서는 --silent(또는 -s)가 표시기와 기타 진행 메시지를 억제합니다. 오류 메시지를 계속 표시하려면 --show-error(-S)를 추가하세요. 출력 옵션이 없으면 curl은 응답 본문을 표준 출력에 쓰며, 이는 터미널일 수 있습니다. 반드시 디렉터리 소스 코드를 포함하는 것은 아닙니다.
명령 프롬프트에서 curl이 인식되지 않는다고 보고하면 curl 실행 파일을 설치하거나 찾아 스크립트에서 호출할 수 있게 하거나, 명령에 전체 경로를 사용하세요. 이 예제들은 Windows 배치 구문과 네트워크 전송을 사용하므로, 그 동작은 로컬 Windows 환경, curl 설치, 원격 서버에 따라 다릅니다.