找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27083|回复: 6

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

[复制链接]
发表于 2014-9-2 12:26:26 | 显示全部楼层 |阅读模式
我想从数据库取值,然后赋值给批处理脚本的的一个变量,求教各路大神怎么搞。
我只知道数据取值可以用osql命令:
osql -E -q "SELECT COUNT(1) FROM dbo.Extract_Paymentech_Exchange_Billing WHERE FileName =" + %FileName%

怎样把上面的值赋值给.bat脚本里的一个变量啊?
发表于 2014-9-2 12:37:36 | 显示全部楼层
  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%
复制代码
 楼主| 发表于 2014-9-2 12:46:08 | 显示全部楼层
用文本哦。应该是有效的。
我还有个想法,大神帮看看:
因为数据库的操作是基于集合的,取出来的就是只有一个值的集合
正好放在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
复制代码
可以吗?
 楼主| 发表于 2014-9-2 12:46:45 | 显示全部楼层
本帖最后由 leoaqi 于 2014-9-2 12:48 编辑

回复 2# DAIC
求帮看看我的想法,我担心in中用引号包括osql命令会影响命令里面的引号和变量
发表于 2014-9-2 13:32:22 | 显示全部楼层
回复 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%
复制代码
再不行的话,就把执行过程发出来给我看看。
 楼主| 发表于 2014-9-2 15:12:43 | 显示全部楼层
回复 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会不会更好点?
发表于 2014-9-2 17:09:39 | 显示全部楼层
回复 6# leoaqi


    能否详细讲解一下好在哪里?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 04:34 , Processed in 0.029939 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表