注意啊!在cmd/bat文件中,如果要调用其他cmd/bat文件的话,一定要用call关键字啊!
直接调,会出现问题的。
例子如下:
deleteLog-callcentercmd, 调deleteLog-callcenter-one.cmd。
deleteLog-callcentercmd
set /P myvar="Is this regular maintenance or CCA outage due to some production issues? (yes/no)"
IF NOT DEFINED myvar (
echo Action cancelled !
GOTO EXITPOINT
)
IF NOT %myvar%==yes (
echo Action cancelled !
GOTO EXITPOINT
)
:EXECPOINT
set output_file=c:\deleteLogs\outputs-cc.log
Date/t >>%output_file% 2>&1
Time/t >>%output_file% 2>&1
call deleteLog-callcenter-one.cmd slc-ccacc-001.corp.ebay.com >>%output_file% 2>&1
call deleteLog-callcenter-one.cmd slc-ccacc-002.corp.ebay.com >>%output_file% 2>&1
call deleteLog-callcenter-one.cmd slc-ccacc-003.corp.ebay.com >>%output_file% 2>&1
:EXITPOINT
pause
deleteLog-callcenter-one.cmd
psexec \\%1 forfiles /P C:\ccanywhere\log /M *.log /C "CMD /c DEL @FILE"
psexec \\%1 forfiles /P C:\Recycler /M *.log /C "CMD /c DEL @FILE"
如果你是这样调用的 :deleteLog-callcenter-one.cmd slc-ccacc-003.corp.ebay.com >>%output_file% 2>&1
前面没有加Call, 那么问题来了。
问题就是,如果你的子文件(deleteLog-callcenter-one.cmd )某一行出现任何错误的话,他会立马跳出,并且会终止整个程序,包括父文件也会终止退出。这是不对的。
而加了 call后,就没有这个问题了,就算子文件(deleteLog-callcenter-one.cmd )某一行出现任何错误,他会继续执行下一行。

本文介绍在CMD/BAT文件中如何正确使用call关键字来调用其他CMD/BAT文件,避免因错误处理不当导致程序异常终止的问题。通过具体实例说明了不使用call与使用call的区别。
2482

被折叠的 条评论
为什么被折叠?



