我有以下批处理文件,它连接文件夹中以 .sql 结尾的所有文件。
set func=%~dp0%Stored Procedures\*.sql
for %%i in (%func%) do type "%%i" >>InstallScript.sql
我们使用 SVN 作为我们的存储库,并且我们正在使用分支。目前,该脚本连接所有 .sql 文件,即使是那些没有更改的文件。我想更改它,使其仅连接在创建分支后已修改和/或创建的文件。我们可以通过查看每个文件夹中 .svn 文件夹上的日期时间来做到这一点(有一个存储过程、视图、函数子文件夹)。但我不知道如何处理批处理文件。
理想情况下是这样的(伪代码):
set func=%~dp0%Stored Procedures\*.sql
set branchDateTime=GetDateTime(%~dp0%.svn) <- Gets the datetime when the .svn folder was created
for %%i in (%func%)
{
if(%%i.LastModifiedOrCreated > branchDateTime)
do type "%%i" >> InstallScript.sql
}
感谢布朗博士,我最终得到了这个(对于任何需要类似东西的人):
@echo off
cls
echo --Install Script Generated For MMH Database %DATE% %TIME% > InstallScript.sql
set branch=%~dp0.svn
for %%i in (%branch%) do set SvnFileDate=%%~ti
set year=%SvnFileDate:~8,2%
set month=%SvnFileDate:~0,2%
set day=%SvnFileDate:~3,2%
set hours=%SvnFileDate:~11,2%
set minutes=%SvnFileDate:~14,2%
set datetime=%year%%month%%day%%hours%%minutes%
:: Folder for Functions
set func=%~dp0%Functions\*.sql
setlocal enableextensions enabledelayedexpansion
@for %%i in (%func%) do set FuncFileDate=%%~ti& ^
set year2=!FuncFileDate:~8,2!& ^
set month2=!FuncFileDate:~0,2!& ^
set day2=!FuncFileDate:~3,2!& ^
set hours2=!FuncFileDate:~11,2!& ^
set minutes2=!FuncFileDate:~14,2!& ^
set datetime2=!year2!!month2!!day2!!hours2!!minutes2!& ^
if "!datetime!" LSS "!datetime2!" type "%%i" >> InstallScript.sql
:: I would add similiar code for each folder, one for Views, Stored Procs, etc...
endlocal
pause