Batch file 命令提示符echo date不返回任何内容

Batch file 命令提示符echo date不返回任何内容,batch-file,cmd,command-prompt,database-backups,sqlcmd,Batch File,Cmd,Command Prompt,Database Backups,Sqlcmd,我有一个用于备份数据库的批处理/sql脚本对。我最近进入这个文件夹想找回一个数据库,但我发现它不起作用。我检查了我的批处理脚本,它没有给我日期或月份,但年份显示为“开”!我的SQL脚本工作得很好,我想添加我的批处理脚本 这是我的批处理脚本 FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B

我有一个用于备份数据库的批处理/sql脚本对。我最近进入这个文件夹想找回一个数据库,但我发现它不起作用。我检查了我的批处理脚本,它没有给我日期或月份,但年份显示为“开”!我的SQL脚本工作得很好,我想添加我的批处理脚本

这是我的批处理脚本

FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%dd%-%mm%-%yyyy%

rem day month year check
echo %dd%
echo %mm%
echo %yyyy%

echo %date%

mkdir %date%

sqlcmd -S .\SQLEXPRESS -i backupQuery.sql
下面是“backupQuery.sql”

DECLARE @BackupLocation AS NVARCHAR(255) = 'C:\SQL\backups\'

/* Set @CurrentDate to a timestamp in mmddyyyy form */
DECLARE @CurrentDate AS NVARCHAR(255)

SET @CurrentDate = REPLICATE('0', 2 - LEN(CAST(DAY(GETDATE()) AS NVARCHAR))) /*day number 1*/

+

CAST(DAY(GETDATE()) AS NVARCHAR) /*day number 2*/

+ '-' +

REPLICATE('0', 2 - LEN(CAST(MONTH(GETDATE()) AS NVARCHAR))) /*month number 1*/

+

CAST(MONTH(GETDATE()) AS NVARCHAR) /*month number 1*/

+ '-' +

CAST(YEAR(GETDATE()) AS NVARCHAR) /*year*/

DECLARE @DatabaseName AS NVARCHAR(255)

/* Get all databases except for the temporary database */
DECLARE Databases CURSOR FOR
SELECT name
FROM sys.databases
WHERE name
NOT IN
('tempdb',
'master',
'model',
'msdb')

OPEN Databases

FETCH NEXT FROM Databases
INTO @DatabaseName

WHILE @@FETCH_STATUS = 0
BEGIN
    DECLARE @Command AS NVARCHAR(MAX)
    SET @Command = 'BACKUP DATABASE ' + QUOTENAME(@DatabaseName) + ' TO DISK = ''' +
        @BackupLocation + @CurrentDate + '\' + @DatabaseName + '.BAK'''
    EXEC(@Command)
    FETCH NEXT FROM Databases
    INTO @DatabaseName
END

CLOSE Databases
DEALLOCATE Databases

他们打算备份到一个以当前日期命名的目录,但它是以--on

我自己并设法解决了它,我认为它崩溃的原因是因为我重新分配了一个系统变量。我所要做的就是在SQL中使用日期转换格式6,在cmd中使用%DATE%变量。这就解决了这个问题,我现在有了dd-MMM-yy的格式。

%date%
是一个内置变量(在
cmd
中),所以覆盖它是个坏主意!打开一个新的
cmd
窗口并键入
%date%
,您将看到它返回当前日期;因此,请为代码使用不同的变量名。。。