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

如何判断一组命令执行成功与否?

如题,要求能判断那条命令出错,如果是用每句后判断errorlevel可不可以精简下?麻烦各位了!

[ 本帖最后由 Cameron 于 2008-10-20 17:33 编辑 ]

不可以
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

应该可以~
A.BAT
  1. @echo off
  2. call B.BAT
  3. if %errorlevel% equ 1 (
  4.     echo ping 命令出错
  5.   ) else (
  6.   if %errorlevel% equ 2 (
  7.        echo tasklist^|findstr 命令出错
  8.     ) else (
  9.     if %errorlevel% equ 3 (
  10.            echo B.BAT全部执行成功
  11. )))
  12. pause
复制代码
B.BAT
  1. ping www.baidu.com||exit /b 1
  2. tasklist|findstr /i "explorer.exe">nul||exit /b 2
  3. exit /b 3
复制代码
用a来调用b,如果b中的某一条命令运行不成功,即指定一个唯一的退出编码来用标记这条运行失败的命令。在a中判断这个退出编码就可以了。

[ 本帖最后由 pusofalse 于 2008-10-20 18:23 编辑 ]
心绪平和,眼藏静谧。

TOP

&&         ||

这两个很不错的。。。。。

TOP

回复 3楼 的帖子

测试了一下,如果命令全部出错只会显示ping出错。连续有命令出错,指定的退出码是累加还是覆盖?||是啥意思?
另外,帖子中的“那“改为”哪“,不好意思-_-!

TOP

回复 5楼 的帖子

只要有一条命令出错就会自动退出了,何来全部出错?
心绪平和,眼藏静谧。

TOP

原帖由 pusofalse 于 2008-10-20 21:50 发表
只要有一条命令出错就会自动退出了,何来全部出错?
难道是因为||?它到底是什么意思?还请赐教!

TOP

回复 7楼 的帖子

||是什么意思,批处理基础教程里面没有讲吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

||用来连接两天命令,只有前面的命令不成功时才运行后面的命令。
Ping www.baidu.com||exit /b 1
如果ping不通(运行失败),执行exit /b 1。否则继续向下执行。
exit /b 1的意思是退出当前批处理脚本,并指定一个退出码1。
心绪平和,眼藏静谧。

TOP

这样可以不?
a.bat
  1. @echo off
  2. call B.BAT
  3. pause
复制代码
b.bat
  1. ping www.baidu.com>nul&&echo ping 命令成功||echo ping 出错
  2. tasklist|findstr /i "^explorer.exe">nul&&echo tasklist^|findstr 命令成功||echo tasklist^|findstr出错
复制代码

TOP

回8楼
不好意思,没看过咱们论坛的批处理基础教程,马上去看一下!
回9楼
thx,知道了!
回10楼
还不如每句后判断errorlevel精简呀o(∩_∩)o...
另外,下面的代码可以吗?cmdlist.bat里面是要执行的命令列表。草就代码没有测试。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2*" %%a in (cmdlist.bat) do (
  4. %%a %%b %%c>nul 2>nul
  5. if !errorlevel! neq 0 echo %%a失败!
  6. )
  7. pause
复制代码
另外,
del没退出编码吗?

[ 本帖最后由 Cameron 于 2008-10-21 20:02 编辑 ]

TOP

del有无退出编码自己测试不就知道了吗。。。
心绪平和,眼藏静谧。

TOP

回复 12楼 的帖子

只是想确认一下-_-!

TOP

退出码?是什么!有什么用?》

TOP

返回列表