OS/Windows

[Windows][업무자동화] Batch파일 활용 - 오늘 날짜에 해당하는 파일만 옮기기

yeit 2024. 5. 25. 20:25
728x90

 

배치 파일(Batch File)이란?

  • 컴퓨터 명령어를 포함하는 텍스트 파일로, 컴퓨터에게 특정 명령을 실행하도록 지시하는 역할을 한다.
  • 주로 Windows 운영 체제에서 사용되며 파일 확장자는 .bat 또는 .cmd

 

 

Batch파일 활용 - 오늘 날짜에 해당하는 파일만 옮기기

파일 이름에 오늘 날짜(YYYY-MM-DD 형식)가 포함되어 있는 파일만 A 디렉터리에서 B 디렉터리로 이동시키기

@echo off

chcp 65001 > nul

setlocal enabledelayedexpansion

:: 오늘 날짜를 YYYY-MM-DD 형식으로 설정
for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i
set "today=%datetime:~0,4%-%datetime:~4,2%-%datetime:~6,2%"

:: 소스 및 타겟 디렉토리 설정
set "SOURCE_DIR=C:\Users\user\Desktop\임시\Backup\A"
set "TARGET_DIR=C:\Users\user\Desktop\임시\Backup\B"

:: 오늘 날짜가 포함된 파일만 이동
for %%i in ("%SOURCE_DIR%\*") do (
    set "filename=%%~nxi"
    echo !filename! | findstr /c:"%today%" >nul
    if !errorlevel! == 0 (
        move "%%i" "%TARGET_DIR%"
    )
)

endlocal
  • @echo off : 명령 프롬프트의 명령이 실행될 때 해당 명령이 표시되지 않도록 한다.
  • chcp 65001 > nul : UTF-8로 변경하여 스크립트에서 유니코드 문자를 제대로 처리할 수 있도록 한다. (디렉터리 경로에 한글이 포함되었을 경우 인식하기 위함)
  • setlocal enabledelayedexpansion : 일반적으로 배치 스크립트에서 변수가 설정되면 해당 라인 전체에서 적용된다. 그러나 enabledelayedexpansion을 사용하면 각 라인이 실행될 때 변수가 설정된다.
  • for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i : 현재 날짜와 시간을 가져와 datetime 변수에 저장한다.
  • set "today=%datetime:~0,4%-%datetime:~4,2%-%datetime:~6,2%"  : 오늘 날짜를 YYYY-MM-DD 형식으로 지정한다.
  • set <변수명> : 환경 변수 설정, 복사될 원본 디렉터리와 복사할 대상 디렉터리를 설정해 준다.
  • for %%i in ("%SOURCE_DIR%\*") do ( ... : 현재 파일의 이름을 filename 변수에 저장하고, 파일명에 오늘 날짜가 포함되어 있으면 타겟 디렉터리로 이동시킨다.
  • endlocal : setlocal 명령어에 의해 시작된 지역 변수 영역을 종료한다.

 

 

참고)

[Windows] 배치 파일 & 작업 스케줄러 방법 (tistory.com)

 

[Windows] 배치 파일 & 작업 스케줄러 방법

배치 파일(Batch File)이란 ? 컴퓨터 명령어를 포함하는 텍스트 파일로, 컴퓨터에게 특정 명령을 실행하도록 지시하는 역할을 한다. 주로 Windows 운영 체제에서 사용되며 파일 확장자는 .bat 또는 .cmd

yeit.tistory.com

 

728x90