将参数从一个批处理文件传递到另一个批处理文件

时间:2014-02-24 10:31:21

标签: sql batch-file database-backups

我有两个批处理文件。

  1. 首先从\ YEAR \ MONTH \ DATE格式中提取日期并创建文件夹。

    @echo off setlocal enabledelayedexpansion :: Extract date fields for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do ( set v1=%%i& set v2=%%j& set v3=%%k if "%%i:~0,1%%" gtr "9" (set v1=%%j& set v2=%%k& set v3=%%l) for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo.^|date') do ( set %%m=!v1!& set %%n=!v2!& set %%o=!v3! ))</br> :: Final set for language independency set year=%yy%%aa% set month=%mm% set day=%dd% :: Make Dir set root=f:\ ::Create folder of today's date if exist %root% goto L2 goto L3 :L2 if not exist %root%\%year% md %root%\%year% :L3 if exist %root%\%year%\%month% goto L5 :L4 if not exist %root%\%year%\%month% md %root%\%year%\%month% :L5 md %root%\%year%\%month%\%day% :: Detete folder older than '3' days forfiles /p "%root%%year%\%month%" /s /d -3 /c "cmd /c IF @isdir == TRUE rd /S /Q @path" echo. pause

  2. 创建数据库备份

    echo off cls echo -- BACKUP DATABASE -- ::set db name set DATABASENAME='db_name' :: set path and format set BACKUPFILENAME='path\%DATABASENAME%.bak' :: set server name set SERVERNAME='server name' echo. ::backup execution sqlcmd -S %SERVERNAME% -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT" echo.

  3. 现在我想从第一个调用第二个批处理文件,并将根,年,月,日等参数从第一个传递到第二个。 我已经单独尝试了两个代码并且它的工作完美。我该如何传递参数。请帮忙

1 个答案:

答案 0 :(得分:0)

如果你从第一批调用第二批,比如

call backupDP.cmd

两个文件共享相同的环境,因此,两者都看到相同的变量。无需传递任何东西,第二批已经拥有所有数据。

相关问题