求助,命令行使用相关(if errorlevel)
dwing吧
全部回复
仅看楼主
level 12
zj262144 楼主
@CD /D "%~dp0"
core\x264 -o "%~dpn1_.flv" "%~1"
core\mp4box -add "%~dpn1_.flv" "%~dpn1_.mp4"
if errorlevel 0 del "%~dpn1_.flv"
pause
这样的命令会导致flv文件被删,但下面的flv不会被删,为何?
难道上面的命令行,约束力不应该更强么??
@CD /D "%~dp0"
core\x264 -o "%~dpn1_.flv" "%~1"
core\mp4box -add "%~dpn1_.flv" "%~dpn1_.mp4"
if not errorlevel 1 del "%~dpn1_.flv"
pause
2011年05月04日 01点05分 1
level 6
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于
                   指定数字的退出代码,指定条件为 true。
一般程序返回0的话是没有错误。
2011年05月05日 11点05分 2
level 12
zj262144 楼主
原来如此……
第一个>=0所以true
第二个≮1所以false
2011年05月06日 05点05分 3
level 6
一般判断是不是出错的话..
IF NOT "%ERRORLEVEL%"=="0" (
    错误处理..
)
就好了。
ERRORLEVEL number貌似是从DOS继承过来的语法。现在好像没啥用。
要是想根据返回码得到错误类型的话利用变量延迟查表更方便。。(以前没有这个就只能连续用ERRORLEVEL..)
ECHO !MP4BOXERR_%ERRORLEVEL%!

2011年05月06日 11点05分 4
level 12
zj262144 楼主
变量判定GJ!
终于明白编程时exit()括号里的值有什么用了...
另外最后的“根据返回码得到错误类型”没捣鼓出来是怎么用的
我知道用变量延迟bat要加setlocal EnableDelayedExpansion
2011年05月06日 12点05分 5
level 9
奇怪为什么楼主中间文件用flv? flv的pts不太精确的,最好mp4。
2011年05月06日 13点05分 6
level 12
zj262144 楼主
呃,我是故意这样测试的,因为mp4box肯定处理不了flv...
平常都是弄mp4
2011年05月06日 13点05分 7
level 6
if errorlevel 255 SET ERROETYPE=255+错误
if errorlevel 254 SET ERROETYPE=254错误
以前DOS是这么判断的。
2011年05月07日 06点05分 8
level 12
zj262144 楼主
原来是这个意思,了解了
最后,感谢解答
2011年05月08日 02点05分 9
1