我在一个批处理文件中有以下几行:
@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我应该使用什么日期格式来确保它实际上是用该月的第几天创建的?
发布于 2012-06-11 23:55:28
在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!发布于 2012-06-11 23:59:49
只需为运行任务的帐户设置区域设置dd.MM.yyyy即可。(对于Windows XP,至少使用控制面板或注册表HKCU\Control panel \International\s sShortDate。
https://stackoverflow.com/questions/10983100
复制相似问题