注意啊!在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 )某一行出现任何错误,他会继续执行下一行。