首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理文件-计划运行与命令运行-正确的日期

问批处理文件-计划运行与命令运行-正确的日期
EN

Stack Overflow用户
提问于 2012-06-11 23:26:26
回答 2查看 747关注 0票数 1

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

代码语言:javascript
复制
@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,也就是说,

代码语言:javascript
复制
back.01.sql
back.02.sql
back.03.sql

当我从CMD运行它时,它实际上会像预期的那样创建它,但当它从调度程序运行时,它看起来像这样:

代码语言:javascript
复制
back.Mo.sql
back.Tu.sql
back.We.sql

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-11 23:55:28

在Windows批处理中处理日期和时间是一件痛苦的事情。

最健壮的解决方案是使用WMIC来获取本地日期和时间。它返回以下格式的值:

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
@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!
票数 3
EN

Stack Overflow用户

发布于 2012-06-11 23:59:49

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10983100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档