2014-02-24 133 views
0

我有两个批处理文件。将参数从一个批处理文件传递到另一个批处理文件

  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.

现在我想从第一调用第二个批处理文件,并传递参数,如根,年,月的备份,日期从第一到第二。 我已经单独尝试了两种代码,其工作完美。我如何传递参数。请帮助

回答

0

如果你调用从第一个第二批,像

call backupDP.cmd 

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

+0

谢谢@MC ND。但第二个文件将明白根,年,月,日是什么意思 – vrun

+0

@vrun,我知道我不会说任何新的东西,但批处理文件是程序。你的问题和我的答案是关于数据交换。程序员的任务是编写程序来使用数据或理解它的含义。对不起,我没有足够的信息知道它将如何使用。 –

相关问题