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

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

[复制链接]
发表于 2008-10-20 16:49:57 | 显示全部楼层 |阅读模式
如题,要求能判断那条命令出错,如果是用每句后判断errorlevel可不可以精简下?麻烦各位了!

[ 本帖最后由 Cameron 于 2008-10-20 17:33 编辑 ]
发表于 2008-10-20 17:48:03 | 显示全部楼层
不可以
发表于 2008-10-20 18:20:17 | 显示全部楼层
应该可以~
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 编辑 ]
发表于 2008-10-20 19:44:49 | 显示全部楼层
&&         ||

这两个很不错的。。。。。
 楼主| 发表于 2008-10-20 21:36:47 | 显示全部楼层

回复 3楼 的帖子

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

回复 5楼 的帖子

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

回复 7楼 的帖子

||是什么意思,批处理基础教程里面没有讲吗?
发表于 2008-10-21 17:44:18 | 显示全部楼层
||用来连接两天命令,只有前面的命令不成功时才运行后面的命令。
Ping www.baidu.com||exit /b 1
如果ping不通(运行失败),执行exit /b 1。否则继续向下执行。
exit /b 1的意思是退出当前批处理脚本,并指定一个退出码1。
发表于 2008-10-21 18:12:48 | 显示全部楼层
这样可以不?
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出错
复制代码
 楼主| 发表于 2008-10-21 20:00:39 | 显示全部楼层
回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 编辑 ]
发表于 2008-10-21 21:23:56 | 显示全部楼层
del有无退出编码自己测试不就知道了吗。。。
 楼主| 发表于 2008-10-21 21:58:01 | 显示全部楼层

回复 12楼 的帖子

只是想确认一下-_-!
发表于 2008-10-24 01:52:39 | 显示全部楼层
退出码?是什么!有什么用?》
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 03:16 , Processed in 0.035030 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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