728x90

작업중인 특정한 파일이 있는데 작업하는 프로그램에서 주기적인 파일 백업을 지원하지 않아 사용자가 별도의 백업을 수행해야 하는 경우가 있습니다. 명령줄만 있으면 작업 스케줄러에 등록하여 자동 실행 되도록 할 수 있습니다.

"set timestamp=%date:/=%%time::=_%" 명령어는 현재 날짜와 시간을 가져와서 "timestamp"라는 환경 변수에 저장하는 명령어입니다.

set timestamp=%date:/=_%_%time::=_%

copy D:\test.log D:\test_%timestamp%.log

set timestamp=

 명령어를 각각의 부분으로 나눠서 설명하면 다음과 같습니다.

  1. "%date%" : 현재 날짜를 나타내는 시스템 환경 변수인 %date%를 사용합니다.
  2. "/=" : %date%에 저장된 날짜에서 "/" 문자를 "_" 문자로 대체합니다.
  3. "%time%" : 현재 시간을 나타내는 시스템 환경 변수인 %time%을 사용합니다.
  4. "::=" : %time%에 저장된 시간에서 ":" 문자를 "_" 문자로 대체합니다.
  5. "%date%%time%" : 앞서 변환한 날짜와 시간 값을 합쳐서 변수 %date%%time%에 저장합니다.
  6. "%date%%time::=%" : %date%%time% 변수에 저장된 값을 다시 "::="을 이용해 ":" 문자를 "_" 문자로 대체합니다.
  7. "set timestamp=%date%%time::=%" : 최종적으로, %date%%time% 변수에 저장된 값을 timestamp 환경 변수에 할당합니다.

위의 과정을 거치면 현재 날짜와 시간이 "_"(언더스코어)를 구분자로 하나의 문자열로 만들어집니다. 이 문자열은 "timestamp" 환경 변수에 저장됩니다. 이후 "copy" 명령어에서 이 환경 변수를 파일 이름에 사용하여 새로운 파일 이름을 생성합니다.

가장 마지막 줄에서 환경 변수의 값을 지정하지 않는 이유는 그 값을 초기화 하기 위함입니다.

>set timestamp=%date:/=_%_%time::=_%

>copy test.log test_%timestamp%.log
        1개 파일이 복사되었습니다.

>dir
 D 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: C8C9-93EB

디렉터리

2023-02-24  오후 07:10    <DIR>          .
2022-06-26  오후 07:59                 0 TEST.LOG
2022-06-26  오후 07:59                 0 test_2023-02-24_19_10_43.10.log
               2개 파일                   0 바이트
               1개 디렉터리  357,889,036,288 바이트 남음

 

728x90

+ Recent posts