从.bat文件非同步运行一系列命令

莎士比亚

所以这是我的情况:我正在从python脚本调用.bat文件。我不确定它是否重要,但是我使用python模块子进程运行该文件。IE

subprocess.call("dir/file.bat", shell=True)

.bat文件的创建取决于python脚本执行过程中的用户输入,但通常它将包含约30-40行命令,可在cmd中运行。除了命令的输入和输出文件外,所有这些代码行都完全相同。例如:

start /wait metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
start /wait metamap13 -Aq pradaxaText2.txt pradaxa2.out.txt
start /wait metamap13 -Aq pradaxaText3.txt pradaxa3.out.txt

如果我同时调用metamap13 40次,我的计算机将崩溃,因为它占用大量内存。如您所见,我已经尝试过

start /wait

组合,以便第一行将在第二行开始之前完成。不幸的是,执行.bat文件时,它将打开一个新窗口,并且一旦程序运行完毕,该窗口将不会关闭,因此直到我手动关闭新的cmd窗口后,第二行才开始。通过这种方法将要处理的数据量巨大,这意味着我不能总是有能力关闭数百个新窗口。我也尝试了以下方法:

start /wait /B metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt

我以为/ B可以消除必须关闭窗口的问题,但是它仍然同时启动所有40行代码。我认为这与以下事实有关:调用metamap13被视为已完成的命令,因此即使metamap实际上仍在运行,它也会移至下一行。因此,我想到了两种可能无法解决的解决方案:

  1. metamap13完成运行后,自动关闭新的cmd窗口。
  2. 仅在metamap13完成后才运行下一行。

任何想法将不胜感激!

foxidrive

metamap13批处理文件中正在启动的进程也与此处有关,但是尝试以以下方式开始:

call metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
call metamap13 -Aq pradaxaText2.txt pradaxa2.out.txt
call metamap13 -Aq pradaxaText3.txt pradaxa3.out.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章