Windows에서는 프린터마다 스풀(Spool) 디렉토리가 다를 수 있다.
기본적으로는 C:\Windows\System32\spool\PRINTERS 이지만, 일부 환경에서는 레지스트리에서 지정된 다른 경로를 사용한다.
따라서, 배치파일이 “현재 시스템의 실제 스풀 폴더”를 자동으로 찾아서 동작하게 만들 수 있는데, 아래는 그 방법을 만들어놓은 스크립트 예이다.
@echo off
:: 관리자 권한 필요
setlocal ENABLEDELAYEDEXPANSION
:: 스풀러 중지
echo Stopping Print Spooler...
net stop spooler >nul 2>&1
:: 레지스트리에서 SpoolDirectory 경로 읽기
for /f "tokens=2,*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers" /v DefaultSpoolDirectory 2^>nul') do (
set SpoolDir=%%B
)
:: 값이 없으면 기본값 사용
if "%SpoolDir%"=="" set SpoolDir=C:\Windows\System32\spool\PRINTERS
:: 경로 표시
echo Spool Directory: %SpoolDir%
:: 속성 해제 및 파일 삭제
attrib -r -h -s "%SpoolDir%" >nul 2>&1
del /s /q "%SpoolDir%\*.*" >nul 2>&1
:: 스풀러 재시작
echo Starting Print Spooler...
net start spooler >nul 2>&1
echo Done.
pause
※ 실행시 관리자 권한으로 실행 하여야 한다.:: 관리자 권한 필요
setlocal ENABLEDELAYEDEXPANSION
:: 스풀러 중지
echo Stopping Print Spooler...
net stop spooler >nul 2>&1
:: 레지스트리에서 SpoolDirectory 경로 읽기
for /f "tokens=2,*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers" /v DefaultSpoolDirectory 2^>nul') do (
set SpoolDir=%%B
)
:: 값이 없으면 기본값 사용
if "%SpoolDir%"=="" set SpoolDir=C:\Windows\System32\spool\PRINTERS
:: 경로 표시
echo Spool Directory: %SpoolDir%
:: 속성 해제 및 파일 삭제
attrib -r -h -s "%SpoolDir%" >nul 2>&1
del /s /q "%SpoolDir%\*.*" >nul 2>&1
:: 스풀러 재시작
echo Starting Print Spooler...
net start spooler >nul 2>&1
echo Done.
pause
프린터마다 스풀러 디렉토리가 다르게 설정되어 있다면 아래의 스크립트로
@echo off
:: 관리자 권한 필요
setlocal ENABLEDELAYEDEXPANSION
:: 스풀러 중지
echo Stopping Print Spooler...
net stop spooler >nul 2>&1
:: 레지스트리에서 SpoolDirectory 경로 읽기
for /f "tokens=*" %%K in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers" 2^>nul ^| findstr /R "\\Printers\\[^\\]*$"') do (
for /f "tokens=2,*" %%A in ('reg query "%%K" /v "SpoolDirectory" 2^>nul ^| find /I "SpoolDirectory"') do (
set Dir=%%B
if not "!Dir!"=="" (
echo Cleaning spool folder: !Dir!
attrib -r -h -s "!Dir!" >nul 2>&1
del /s /q "!Dir!\*.*" >nul 2>&1
)
)
)
:: 스풀러 재시작
echo Starting Print Spooler...
net start spooler >nul 2>&1
echo 모든 프린터 인쇄 대기작업 삭제 완료
:: 관리자 권한 필요
setlocal ENABLEDELAYEDEXPANSION
:: 스풀러 중지
echo Stopping Print Spooler...
net stop spooler >nul 2>&1
:: 레지스트리에서 SpoolDirectory 경로 읽기
for /f "tokens=*" %%K in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers" 2^>nul ^| findstr /R "\\Printers\\[^\\]*$"') do (
for /f "tokens=2,*" %%A in ('reg query "%%K" /v "SpoolDirectory" 2^>nul ^| find /I "SpoolDirectory"') do (
set Dir=%%B
if not "!Dir!"=="" (
echo Cleaning spool folder: !Dir!
attrib -r -h -s "!Dir!" >nul 2>&1
del /s /q "!Dir!\*.*" >nul 2>&1
)
)
)
:: 스풀러 재시작
echo Starting Print Spooler...
net start spooler >nul 2>&1
echo 모든 프린터 인쇄 대기작업 삭제 완료





SpoolClear.BAT