2014-10-28 100 views
2

我有一个备份我的SQL数据库的批处理文件,并希望将日期追加到创建的文件末尾。将日期追加到Windows批处理文件中的文件名

SQLCMD -U SA -P PWD -S SERVER \ SQL2012 -Q“BACKUP DATABASE [MYDB] TO DISK = N'E:\数据库\ Mydb.bak中还原” WITH NOFORMAT,NOINIT,NAME = Ñ “MYDB - 全数据库备份”,跳过,NOREWIND,NOUNLOAD,STATS = 10" -d‘MYDB’

目前我所有的备份量越来越添加到Mydb.bak中还原文件,但我希望能有新的每个备份的文件名与日期例如MYDB20141028.bak

回答

3

一个选项,如果你想要做在SQL日期追加是通过这样的多个命令:

的sqlcmd -U sa -P pwd -S SERVER \ SQL2012 -Q“DECLARE @dest NVARCHAR(max); SET @dest = N'E:\ Databases \ MYDB'+ CONVERT(varchar(8),GETDATE(),112)+ '.bak';备份数据库[MYDB]至 DISK = @dest'WITH NOFORMAT,NOINIT,NAME = N'MYDB-完整数据库 备份',SKIP,NOREWIND,NOUNLOAD,STATS = 10“-d”MYDB“

3

您可以通过解析date命令的输出来获取当前日期。

如果您的语言环境是美国英语,那么以下方法可行。

for /f "tokens=2,3,4 delims=/ " %%i in ('date /t') do set DATE=%%k%%i%%j 

它将输出date /t并重新排列它。分隔符被设置为正斜杠和空格。然后它需要令牌2,3,4并以4,2,3的顺序输出它们。

因此将需要Mon 10/27/2014并把它分解成记号:

  1. 周一

而且将DATE变量设置为20141027

有了,你可以改变我们的备份命令:

sqlcmd -U sa -P pwd -S SERVER\SQL2012 -Q "BACKUP DATABASE [MYDB] TO DISK = 
N'E:\Databases\MYDB%DATE%.bak' WITH NOFORMAT, NOINIT, NAME = N'MYDB-Full Database Backup', SKIP, 
NOREWIND, NOUNLOAD, STATS = 10" -d "MYDB" 
+0

'date'命令是否以'mm/dd/yyyy'格式返回日期?例如,如果日期是“9/1/2014”,那么这会返回“20140901”还是“201491”? – 2014-10-28 01:43:43

+0

对于美国英语系统,它返回mm/dd/yyyy。但是,该格式是基于当前的语言环境设置的。所以英国英语的格式会有所不同。 – shf301 2014-10-28 01:47:21

+0

+1很好,谢谢 – 2014-10-28 01:55:36

相关问题