有没有一种方法可以使批处理文件执行三个单独的任务?

时间:2020-05-03 00:28:54

标签: python file batch-file abaqus

我正在尝试创建一个批处理文件,以完成三个单独的任务:1)运行Abaqus作业,2)从.odb文件中提取数据,以及3)创建图形。

我能够运行第1项和第2项,但是无法使第3项在同一批处理文件中运行。当我单独运行它时,它可以工作。如果有人有主意,那就太好了!谢谢!

:: 1) Run the Abaqus job
call Abaqus double job=Bond_Test_Script cpus=1 double interactive ask_delete=OFF 
echo on
:: 2) Run the python data extract 
Abaqus python -c "import BpT; BpT.data_extract('Bond_Test_Script')"
echo on
:: 3) Plot the data
call "C:\Users\anaconda3\condabin\activate.bat" 
"C:\Users\anaconda3\python.exe" "F:\Abaqus Working Directory\BpT_Plot.py"
pause
'''

1 个答案:

答案 0 :(得分:0)

如果未执行第3步,那么几乎可以肯定Abaqus本身就是批处理脚本。

从另一个批处理脚本运行一个批处理脚本时,除非您像在步骤1中那样使用call变体,否则它不会返回到原始脚本。

您可以使用以下两个脚本来查看此脚本,首先是first.cmd

@echo off
echo first a
call second
echo first b
second
echo first c

然后是second.cmd

echo second

运行first将永远不会到达回显first c的命令,因为没有second的{​​{1}}的执行将不会返回:

call

解决方案是将步骤2更改为(添加C:\Users\PaxDiablo> first first a second first b second ):

call

顺便说一句,我也尽量避免使用call Abaqus python -c "import BpT; BpT.data_extract('Bond_Test_Script')" 作为注释标记(坚持使用::)。这是一个错误,实际上是一个标签语句,就像rem一样,但是使用了无效的名称,这在括号,循环和:some_label语句等更复杂的情况下通常效果不佳。