![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 04:40 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » errorlevel问题 |
| 可打印版本 733 / 9 |
| 第1楼 zyz0304360 | 发表于 2008-01-06 04:56 |
| 中级用户 发帖 123 积分 257 来自 烟台 | |
|
errorlevel问题 echo ③、Import Data… > > "Import_FeeMst.log"
echo bcp %sqlDb%..%sqlTable1% in %sqlTable1%.DAT -n -q -S%sqlSv% -U%sqlUser% -P%sqlPwd% -b1000000 > > "Import_FeeMst.log" bcp %sqlDb%..%sqlTable1% in %sqlTable1%.DAT -n -q -S%sqlSv% -U%sqlUser% -P%sqlPwd% -b1000000 > > "Import_FeeMst.log" if errorlevel 1 ( set errproc=③、Import Data set errsite=「 Import %sqlDb%..%sqlTable1% 」 goto :_Error ) echo bcp %sqlDb%..%sqlTable1% in has succeed> > "Import_FeeMst.log" 如果BCP插入主键重复,报错,那么ERRORLEVEL应该是多少? |
|
| 第2楼 fastslz | 发表于 2008-01-06 15:51 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
echo %errorlevel%
|
|
| 第3楼 zyz0304360 | 发表于 2008-01-07 09:42 |
| 中级用户 发帖 123 积分 257 来自 烟台 | |
|
我用你的方法查了一下,
在主键重复,插入错误的情况下 errorlevel 居然是0 明明已经失败了, errorlevel 怎么还是0呢? 本人初学,请各位高手帮忙 |
|
| 第4楼 fastslz | 发表于 2008-01-07 11:12 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
你1楼的不是CMD批处理吧
bcp又是什么? |
|
| 第5楼 zyz0304360 | 发表于 2008-01-07 13:07 |
| 中级用户 发帖 123 积分 257 来自 烟台 | |
|
BCP就是向数据库中导入数据的一种工具
|
|
| 第6楼 fastslz | 发表于 2008-01-07 14:49 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
echo ③、Import Data… > > "Import_FeeMst.log"
如果是XP CMD这个语法是错误的 |
|
| 第7楼 Climbing | 发表于 2008-01-07 16:59 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
errorlevel一般是命令行程序执行某个指令后的返回值,bcp不一定遵循这个标准,对于它来说,可能只要程序正常执行了就返回0。
|
|
| 第8楼 zyz0304360 | 发表于 2008-01-07 20:46 |
| 中级用户 发帖 123 积分 257 来自 烟台 | |
|
7 楼说的十分有理
现有一棘手问题 在批处理中(.bat) 写了一个BCP IN 如果导入数据时主键重复 errorlevel 依然为0 如果BCP中加了 -e 参数,也不会生成errfile文件。 例: @echo off set date=%date% set fdate=%date:/=% set folder=D:\ set folder_bk=D:\test\ date /T >>test.log time /T >>test.log echo begin in ...... bcp "master.dbo.table1" in "table1.dat" -S. -Usa -P -n -E -e%folder_bk%%fdate%errfile.dat || goto :_error echo errorlevel: %errorlevel% if errorlevel 1 ( set errproc=Data IN set errsite=「table1 IN」 goto :_Error ) echo in succeeded!>>test.log pause copy test.log %folder_bk%%fdate%%time:~0,2%%time:~3,2%test.log goto :end :error time /T >>test.log echo here is an error >>test.log goto end :end time /T >>test.log echo ___________________END_______________>>test.log 在BCP IN主键重复报错的情况下 1.errorlevel依然是0(和BCP IN执行成功时一样) 2.|| goto :_error 没有执行(难道是BCP报错,但DOS不认为是错,反正是数据库和DOS没有直接关系,但是BCP就是批处理命令啊,太郁闷了) 3.BCP IN 中有 -e 参数,但主键重复时,不会生成errfile文件 请各位高手指点一下 怎么写,才能让BCP IN主键重复报错后,跳转到:error 谢谢大家 |
|
| 第9楼 Climbing | 发表于 2008-01-08 08:39 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
bcp在导入数据时是否有屏幕输出(或者有相关参数来控制),如果有,可以将屏幕输出转向到一个文件中,然后再在该文件中查找是否有对应的错误字符串。
|
|
| 第10楼 zyz0304360 | 发表于 2008-01-08 13:37 |
| 中级用户 发帖 123 积分 257 来自 烟台 | |
|
嗯,有
在 test.log 里有 “SQLState = 23000, NativeError = 2627 Error = 。。。。。。 SQLState = 01000, NativeError = 3621 Warning = 。。。。。。 “ 可是我不太懂批处理编程,属于初学阶段 不会写你所说的 ”在该文件中查找是否有对应的错误字符串。 “ |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |