[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求助:数据库取值赋值给批处理变量

我想从数据库取值,然后赋值给批处理脚本的的一个变量,求教各路大神怎么搞。
我只知道数据取值可以用osql命令:
osql -E -q "SELECT COUNT(1) FROM dbo.Extract_Paymentech_Exchange_Billing WHERE FileName =" + %FileName%

怎样把上面的值赋值给.bat脚本里的一个变量啊?

  1. osql -E -q "SELECT COUNT(1) FROM dbo.Extract_Paymentech_Exchange_Billing WHERE FileName =" + %FileName% > %temp%\a.txt
  2. set /p str=<%temp%\a.txt
  3. echo,%str%
复制代码

TOP

用文本哦。应该是有效的。
我还有个想法,大神帮看看:
因为数据库的操作是基于集合的,取出来的就是只有一个值的集合
正好放在for语句的in中,然后自动分配给for后面的变量%%i
  1. for %%i in ('osql -E -q "SELECT COUNT(1) FROM dbo.Extract_Paymentech_Exchange_Billing WHERE FileName =" + %FileName%') do set recordscount = %%i
复制代码
可以吗?

TOP

本帖最后由 leoaqi 于 2014-9-2 12:48 编辑

回复 2# DAIC
求帮看看我的想法,我担心in中用引号包括osql命令会影响命令里面的引号和变量

TOP

回复 4# leoaqi
  1. for /f %%i in ('osql -E -q "SELECT COUNT(1) FROM dbo.Extract_Paymentech_Exchange_Billing WHERE FileName =" + %FileName%') do (
  2.     set recordscount=%%i
  3. )
  4. echo,%recordscount%
复制代码
不行的话,就加上转义符号试试:
  1. for /f %%i in ('osql -E -q "SELECT COUNT^(1^) FROM dbo.Extract_Paymentech_Exchange_Billing WHERE FileName ^=" ^+ %FileName%') do (
  2.     set recordscount=%%i
  3. )
  4. echo,%recordscount%
复制代码
再不行的话,就把执行过程发出来给我看看。

TOP

回复 5# DAIC
  1. for /f "usebackq" %%i in (`osql -E -q "SELECT COUNT^(1^) FROM dbo.Extract_Paymentech_Exchange_Billing WHERE FileName ^=" ^+ %FileName%`) do (
  2.     set recordscount=%%i
  3. )
  4. echo,%recordscount%
复制代码
用usebackq会不会更好点?

TOP

回复 6# leoaqi


    能否详细讲解一下好在哪里?

TOP

返回列表