bat批处理执行exe和SQL语句

说明:
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 off

cd /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.txt

echo %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
)

转载于:https://my.oschina.net/mj23/blog/739400

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值