我有一个批处理文件,用于备份我的SQL数据库,并希望将日期附加到创建文件的末尾。
sqlcmd -U sa -P pwd -S SERVER \ SQL2012 -Q" BACKUP DATABASE [MYDB] TO DISK = N' E:\ Databases \ MYDB.bak'与NOFORMAT,NOINIT,NAME = N' MYDB-完整数据库备份',SKIP,NOREWIND,NOUNLOAD,STATS = 10" -d" MYDB"
目前我的所有备份都已添加到MYDB.bak文件中,但我想为每个备份添加新文件名,例如日期MYDB20141028.bak
答案 0 :(得分: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
并将其拆分为令牌:
并将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"
答案 1 :(得分:3)
如果要在SQL中附加日期,则选项是传递多个命令,如下所示:
sqlcmd -U sa -P pwd -S SERVER \ SQL2012 -Q“DECLARE @dest NVARCHAR(最大); SET @dest = N'E:\ Databases \ MYDB'+ CONVERT(varchar(8),GETDATE(),112)+'。bak'; BACKUP DATABASE [MYDB] TO DISK = @dest'WITH NOFORMAT,NOINIT,NAME = N'MYDB-Full Database 备份',SKIP,NOREWIND,NOUNLOAD,STATS = 10“-d”MYDB“