[Python] .bat 파일로 백그라운드 실행 스크립트 생성 방법

2025. 7. 14. 14:29Python

파이썬으로 만든 파일을 백그라운드에서 실행하도록하는 스크립트 생성 방법이다.

예를들어 파이썬으로 watch_file.py 처럼 특정 폴더의 파일들를 감시하는 프로그램을 만들었다고 했을 때

이걸 백그라운드에서 돌아가게 하기 위한 작업니다.

실행은 pythonw를 이용하여 실행한다.

아래처럼 .bat파일을 하나 생성한다. (예 : run_watcher_file.bat)

@echo off
:: 관리자 권한으로 실행
:: 관리자 권한이 아니면 자동으로 관리자 권한으로 재시작
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo 관리자 권한 필요 - 재시작 중...
    powershell -Command "Start-Process '%~f0' -Verb runAs"
    exit /b
)

:: Python 백그라운드 실행
start "" pythonw "D:\Temp\watch_file.py"

흠.. 그런데 문제는 이렇게 시작했을 때 나는 이게 돌아가고 있는지 파악할 수가 없었다.

이런 난감한...

그래서 그걸 확인하고자 하는 .bat 파일을 또 만들었다. (예 : show_watcher_file.bat)

@echo off
chcp 65001 >nul
echo [🔍] 실행 중인 pythonw.exe 프로세스를 확인합니다...
echo.

powershell -NoProfile -Command ^
"Get-WmiObject Win32_Process -Filter \"Name = 'pythonw.exe'\" ^| ^
Select-Object ProcessId, CommandLine ^| ^
Format-Table -AutoSize"

echo.
echo [✔] 확인 완료. 아무 키나 누르면 닫습니다.
pause >nul

이건 pythonw로 동작하고 있는 모든 프로세스를 보여 주는 bat 파일이다.

여기까지 했으면 이제 프로세시를 죽이는 bat도 만들어야지... (예 : kill_watcher_file.bat)

@echo off
:: 관리자 권한으로 실행
:: 관리자 권한이 아니면 자동으로 관리자 권한으로 재시작
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo [🛡] 관리자 권한으로 다시 시작합니다...
    powershell -Command "Start-Process '%~f0' -Verb runAs"
    exit /b
)

echo [💥] 모든 pythonw.exe 프로세스를 강제 종료합니다...
taskkill /f /im pythonw.exe >nul 2>&1

if %errorlevel% equ 0 (
    echo [✅] pythonw.exe 모두 종료 완료!
) else (
    echo [⚠️] 일부 pythonw.exe 종료 실패!
)
pause

run_watcher_file.bat와 kill_watcher_file.bat는 관리자 권한으로 실행하지 않을 경우에는 알아서 관리자 권한으로 재 시작해 주도록 되어 있다.