簡體   English   中英

命令提示符回顯日期不返回任何內容

[英]Command Prompt echo date returns nothing

我有一個用於備份數據庫的批處理/ 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 ?!的形式出現。

我自己和@aschipfl設法解決了這個問題,我認為它被破壞的原因是由於我重新分配了系統變量。 我所要做的就是在SQL中使用DATE CONVERT格式6,在cmd中使用%date%變量。 這樣就解決了,我現在的格式為dd-MMM-yy。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM