파일 이름의 현재 날짜


15

데이터베이스 덤프를 만드는 백업 스크립트를 예약했습니다. 파일 이름에 날짜 타임 스탬프를 추가하려면 어떻게해야합니까?

Windows와 CMD에 대해 이야기하고 있습니다.

답변:


21

명령 프롬프트 및 배치 파일에서 및를 사용 %date%하여 %time%각각 날짜와 시간을 반환 할 수 있습니다 . 날짜는 정상적으로 작동하지만 반환되는 시간 값에는 콜론이 포함되어 있으며 파일 이름에 사용할 수없는 콜론이 포함되어 있지만이를 제거하는 방법이 있습니다.

다음과 같은 것을 사용하십시오 :

COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt

이것은 다음과 같은 파일 이름을 생성합니다 file_172215_01062009.txt

업데이트 : 아래 주석은이 명령에 대한 흥미로운 왜곡뿐만 아니라 피할 수있는 몇 가지 잠재적 인 문제가 있습니다.


3
좋은 작은 팁. BTW, 다른 방법으로, 즉 "file_20090601_172215"를 수행하면 알파벳 순서대로 파일이 올바른 순서로 표시됩니다.

5
콜론을 제거하기 위해 % time :: = %를 사용할 수도 있습니다.
user1686 2016 년

2
스크립트를 테스트했을 때 시스템 로케일이 다르면 날짜 하위 문자열이 중단된다고 말하고 싶습니까? 설정 때문에 다른 날짜 표시 형식의 스크립트 주자로 테스트 사용자와 휴식을위한이 수도 작업 ...
오스카 Duveborn

3
시간 0-9를 조심하십시오! CMD는 시간의 첫 문자를 0이 아닌 <SPACE>로 설정합니다. 위의 COPY 명령은 대상 파일 이름을 따옴표로 묶지 않으면 문제가 발생합니다.
Evan Anderson

2
참고 것을 %DATE%%TIME%로케일 알고있다! 즉, 유럽 컴퓨터에서는을 얻습니다 DD.MM.YYYY. Arrgh.
Pekka

14

사용 %DATE%및 / 또는 %TIME선택적으로 사용하여 파일 이름에 허용되지 않는 문자 대체, 환경 변수 %name:from=to%( %TIME::=%모든 콜론을 제거하는 것)을.

이론»echo % date %
2009-06-01

이론»echo % time %
16 : 30 : 41,46

이론»echo % time :: = %
163052,17

이론»echo % time :: =, %
16,30,58,68

이론»echo backup- % date %-% time :: =-%. zip
backup-2009-06-01-16-31-18,82.zip

1
와우, : x = y 트릭에 대해 전혀 모른다. 정말 멋지다.
Eugene Katz 2016 년

1
: = 트릭의 경우 +1, iv'e는 MS-Dos 1 이후로이 게임에 참여했으며 이것이 처음 봤습니다. 여러 문자를 변경할 수 있다면 더 좋을 것입니다 !! :-)
shawty

글쎄, 그것은 Windows NT 시리즈의 Cmd.exe에만 추가되었습니다 ... 그리고 여러 변경을 수행하려면, 그냥 체인 set tmp=%tmp:x=y%등을 가지고
user1686

% DATE %의 내용 (파일 수, 내용 및 순서)은 로케일마다 다릅니다.
symcbean

4

신뢰할 수있는 유일한 방법은 foxidrive @의 솔루션입니다, 지역 설정은 어떤 적절한 날짜를 얻을 수 /programming/11037831/filename-timestamp-in-windows-cmd-batch-script가

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause

1

파일 이름에 % DATE % 변수를 사용하십시오.

% TIME % 변수도 있지만 파일 이름에 허용되지 않는 문자가 포함되어 있습니다.

다음은 생성 된 파일 이름에 날짜와 시간이있는 새 파일에 한 줄의 텍스트를 쓰는 예입니다.

echo "testfile" >> backup-%DATE%.txt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.