Board logo

标题: 如何判断一组命令执行成功与否? [打印本页]

作者: Cameron    时间: 2008-10-20 16:49     标题: 如何判断一组命令执行成功与否?

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

[ 本帖最后由 Cameron 于 2008-10-20 17:33 编辑 ]
作者: Batcher    时间: 2008-10-20 17:48

不可以
作者: pusofalse    时间: 2008-10-20 18:20

应该可以~
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 编辑 ]
作者: lovelymorning    时间: 2008-10-20 19:44

&&         ||

这两个很不错的。。。。。
作者: Cameron    时间: 2008-10-20 21:36     标题: 回复 3楼 的帖子

测试了一下,如果命令全部出错只会显示ping出错。连续有命令出错,指定的退出码是累加还是覆盖?||是啥意思?
另外,帖子中的“那“改为”哪“,不好意思-_-!
作者: pusofalse    时间: 2008-10-20 21:50     标题: 回复 5楼 的帖子

只要有一条命令出错就会自动退出了,何来全部出错?
作者: Cameron    时间: 2008-10-21 16:54

原帖由 pusofalse 于 2008-10-20 21:50 发表
只要有一条命令出错就会自动退出了,何来全部出错?
难道是因为||?它到底是什么意思?还请赐教!
作者: Batcher    时间: 2008-10-21 17:42     标题: 回复 7楼 的帖子

||是什么意思,批处理基础教程里面没有讲吗?
作者: pusofalse    时间: 2008-10-21 17:44

||用来连接两天命令,只有前面的命令不成功时才运行后面的命令。
Ping www.baidu.com||exit /b 1
如果ping不通(运行失败),执行exit /b 1。否则继续向下执行。
exit /b 1的意思是退出当前批处理脚本,并指定一个退出码1。
作者: terse    时间: 2008-10-21 18:12

这样可以不?
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出错
复制代码

作者: Cameron    时间: 2008-10-21 20:00

回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 编辑 ]
作者: pusofalse    时间: 2008-10-21 21:23

del有无退出编码自己测试不就知道了吗。。。
作者: Cameron    时间: 2008-10-21 21:58     标题: 回复 12楼 的帖子

只是想确认一下-_-!
作者: jellyhk    时间: 2008-10-24 01:52

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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2