我知道从批处理文件顺序调用shell命令有很多问题。但是,我无法解决这个特殊问题,主要是在调用Oracle WebLogic(WLST)Python脚本时。
我有一个批处理文件,它在高级别上执行以下操作:
script1.py
在管理服务器上配置某些内容script2.py
以在管理服务器上配置其他内容文件摘录:
:: set some paths
FOR /F "tokens=1,2 delims==" %%G IN (config.properties) DO (set %%G=%%H)
:: copy files
call copyFiles.bat
:: start the server
start startWebLogic.cmd
:: execute script 1
set _JAVA_OPTIONS="-XX:MaxHeapSize=512m"
%WLST_PATH%\wlst.cmd script-1.py
:: some more DOS commands
:: execute script 2
%WLST_PATH%\wlst.cmd script-2.py
问题在于步骤3和5.每当wlst
初始化并开始执行时,它就拥有控制台并开始在控制台上打印输出。完成后,它根本不会执行下一个脚本命令。执行只是在那里停止。控件只在%WLST_PATH%
内结束。
作为解决方法,我使用start
和timeout
命令。
:: execute script 1
set _JAVA_OPTIONS="-XX:MaxHeapSize=512m"
start /MIN wlst.cmd %WLST_PATH%\wlst.cmd script-1.py
timeout /t 40 /nobreak
:: some more DOS commands
:: execute script 2
start /MIN wlst.cmd %WLST_PATH%\wlst.cmd script-2.py
timeout /t 40 /nobreak
我也尝试使用call
,但它没有帮助,它导致了与上面提到的相同的问题。有没有更好的方法呢?我想要的是所有这些命令都应该按顺序执行。
答案 0 :(得分:0)
根据 eryksun 的建议,使用以下方法解决了此问题:
cmd /c ""%WLST_PATH%\wlst.cmd" script-1.py"