1

我在批处理文件中有以下几行:

@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的备份文件,即

back.01.sql
back.02.sql
back.03.sql

当我从 CMD 运行它时,它实际上按预期创建它,但是当它从调度程序运行时,它看起来像:

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

我应该使用什么日期格式来确保它实际上是用月份中的天数创建的?

4

2 回答 2

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)

因此,您可以使用以下内容在变量Edit中获取当前日期 - 更正了从 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!
于 2012-06-11T15:55:28.360 回答
0

dd.MM.yyyy只需为运行任务的帐户设置区域设置。(至少使用 Windows XP 的控制面板或注册表 HKCU\Control Panel\International\sShortDate。

于 2012-06-11T15:59:48.703 回答