2012-06-11 3 views
1

I 배치 파일에 다음과 같은 몇 줄이 있습니다배치 파일 - cmd를 실행 VS 예정 실행 - 정확한 날짜

@echo off 
echo Running dump... 
"D:\wamp\bin\mysql\mysql5.5.16\bin\mysqldump" --host="localhost" --user="****" --password="****" database> "D:\wamp\backup\mysql\"back.%date:~0,2%.sql 
echo Done! 

아마, 그것은 01, 02, 03 등 오늘날의 하루 백업 파일을 생성해야합니다, ..., (31), 즉,

내가 CMD에서 실행
back.01.sql 
back.02.sql 
back.03.sql 

, 실제로는 예상대로를 만들지 만이 스케줄러에서 실행되는 경우는 다음과 같습니다

back.Mo.sql 
back.Tu.sql 
back.We.sql 

실제로 월의 번호와 함께 생성되도록하려면 어떤 날짜 형식을 사용해야합니까?

답변

3

Windows 일괄 처리에서 날짜와 시간을 사용하는 것은 고통입니다.

가장 강력한 솔루션은 WMIC를 사용하여 현지 날짜와 시간을 얻는 것입니다. 그것은 다음과 같은 형식의 값을 반환

YYYYMMDDhhmmss.dddddd-ttt 

YYYY = year 
MM  = month 
DD  = day 
hh  = hour in 24 hour format 
mm  = minutes 
ss  = seconds 
dddddd = fractional seconds 
ttt = time zone (minutes difference from Greenwich Mean Time) 

그래서 당신은 변수
편집에서 해당 월의 현재 날짜를 얻을 수를 사용할 수 있습니다를 - 7에 문자열 시작 위치 수정 6

set curDate= 
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined curDate set curDate=%%x 
set day=%curDate:~6,2% 

이 기술의 큰 장점은 로캘 설정에 관계없이 전 세계 모든 Windows 컴퓨터에서 작동한다는 것입니다. 여기



편집 삽입 된 기술을 사용하여 코드 - 7에서 작업을 실행하는 계정에 대한 6

@echo off 
echo Running dump... 
set curDate= 
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined curDate set curDate=%%x 
set "day=%curDate:~6,2%" 
"D:\wamp\bin\mysql\mysql5.5.16\bin\mysqldump" --host="localhost" --user="****" --password="****" database> "D:\wamp\backup\mysql\back.%day%.sql" 
echo Done! 
+0

이것은 좋은 생각으로 들리지만, 언제든지 값을 되풀이합니다. 'C : \> echo % day % % curDate : ~ 7,2 %'- 커맨드 언어에 익숙하지 않아서 죄송합니다. – Elen

+0

@Elen - 업데이트 된 답변보기 – dbenham

+0

나는 전에 cms에서 실행 해 보았습니다. 이제 코드를'bat' 파일에 넣었습니다. 그것은 오늘'back.21.sql'이라는 파일을 만들었습니다 - 21은 어디에서 왔습니까? ... – Elen

0

그냥 설정 지역 설정 dd.MM.yyyy에 문자열 시작 위치 수정 . (Windows XP 용 컨트롤 패널 또는 레지스트리 HKCU \ Control Panel \ International \ sShortDate를 사용하십시오.)