2014-10-28 4 views
2

У меня есть пакетный файл, который поддерживает мою базу данных SQL и хочет добавить дату в конец созданного файла.Добавить дату в filename в пакетном файле Windows

Sqlcmd -U са -P PWD -S Server \ SQL2012 -Q «BACKUP DATABASE [MYDB] К DISK = п'е: \ Базы данных \ mydb.bak» С NOFORMAT, NOINIT, ИМЯ = N 'MYDB-Полное резервное копирование базы данных', SKIP, 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: \ Базы данных \ MYDB '+ CONVERT (varchar (8), GETDATE(), 112) + '.bak'; BACKUP DATABASE [MYDB] TO DISK = @dest 'С 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. Mon

И установит переменную 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' команда дата возвращения в 'формате/дд/yyyy' мм? Например, если дата была '9/1/2014', вернет ли она' 20140901' или '201491'? –

+0

Для американских английских систем он возвращает mm/dd/yyyy. Однако этот формат задается на основе текущего языкового стандарта. Так что английский английский формат будет другим. – shf301

+0

+1 отлично, спасибо –

Смежные вопросы