为什么80%的码农都做不了架构师?>>>
说明:
1. 调用两个windows小程序,取得年级和班级的ID;
简单的db链接开始,sql执行,获取读到的id并返回,db链接关闭。
注意:在main函数里将void改成int。就能在bat通过%errorlevel%获取到反回得id值。
2. 获取要取得数据的期间,方式很灵活,可以调用bat时直接输入,如下:
getData.bat 2016/08/01T10:00:00 2016/08/02T00:00:00
也可以双击bat运行时再输入开始和结束的时间。也可以将时间写到文本里通过读文本来获取。
3. 打印系统时间【开始】到time.txt
4. 通过sqlcmd执行sql语句,获取数据
5. 再次打印系统时间【结束】并输出获取到的数据条数到time.txt。
%A%:能获取到从数据库读到的数据条数。
bat写法:
@echo offcd /d "%~dp0"
start /wait GetGradeID.exe "Grade2"
echo %errorlevel%
set gradeId=%errorlevel%start /wait GetClassId.exe "Class5"
echo %errorlevel%
set classId=%errorlevel%set cnt=2;
if "%2"=="" (set cnt=1)
if "%1"=="" (set cnt=0)
if %cnt%==2 (
set "start=%1"
set "end=%2")else (
echo 请输入取得数据的期间
set/p start=请输入开始时间:
set/p end=请输入结束时间)echo.数据的期间>>time.txt
echo.开始: %start%>>time.txt
echo.结束: %end%>>time.txt
echo. >>time.txtecho %date% %time% start to get data : [Grade=Grade2, Class=Class5] >>time.txt
for /f "delims=" %%A in ('sqlcmd -E -S .\DBInstance -Q "USE MyDatabase2;Select * FROM ClassMonitorData WHERE GradeID=%gradeId% AND ClassID=%classId% AND Datetime >= '%end%' AND Datetime <= '%end%'"') do set A=%%A
echo %date% %time% end to get data : %A%>>time.txt
echo. >>time.txt
===============
数据期间如果嫌输入麻烦,还有其他处理方式,比如将时间写到一个txt文本文档里period.txt
2016-08-01T10:00:00
2016-08-02T00:00:00
从文本文档读取时间:
for /f "tokens=1* delims=:" %%i in ('Type period.txt^|Findstr /n ".*"') do (
If "%%i"=="1" Set start=%%j
If "%%i"=="2" Set end=%%j
)