执行其他.exe后,批处理文件不会完全执行

时间:2011-04-14 21:53:12

标签: windows batch-file nusmv

我正在尝试创建应该具有以下命令的批处理文件:

cd "c:\Program files\NuSMV\2.5.2\bin\"
NuSMV -int short.smv
go
pick_state -r
print_current_state -v
simulate -r 3
show_traces -t
show_traces -v

我遇到的问题是:执行第二行后,NuSMV.exe在cmd中运行,其他命令在我退出NuSMV之前不执行,但我想在NuSMV中运行命令3-8。我需要在.bat文件中更改什么。感谢。

2 个答案:

答案 0 :(得分:4)

将命令3-8放入文本文件(例如,cmds.txt)中,然后按如下方式运行NuSMV:

NuSMV -int short.smv -source cmds.txt

从手册(nusmv.pdf)p.48:

  

也可以读取NUSMV   并执行一系列命令   从文件,通过命令行   选项-source:   系统提示> NuSMV -source cmd文件

答案 1 :(得分:2)

完成Vik答案,您可以在同一个BAT文件中创建NUSMV命令文件

@echo off
pushd "c:\Program files\NuSMV\2.5.2\bin\"
echo go >"%TEMP%\cmds.txt"
echo pick_state -r >>"%TEMP%\cmds.txt"
echo print_current_state -v >>"%TEMP%\cmds.txt"
echo simulate -r 3 >>"%TEMP%\cmds.txt"
echo show_traces -t >>"%TEMP%\cmds.txt"
echo show_traces -v >>"%TEMP%\cmds.txt"
NuSMV -int short.smv -source "%TEMP%\cmds.txt"
del "%TEMP%\cmds.txt"
popd

此外,我建议您不要将当前目录更改为NuSMV目录。编辑PATH,或者仅指定NuSMV的完整路径。在这两种情况下,您应该从short.smv所在的当前目录中调用BAT .C

@echo off
echo go >"%TEMP%\cmds.txt"
echo pick_state -r >>"%TEMP%\cmds.txt"
echo print_current_state -v >>"%TEMP%\cmds.txt"
echo simulate -r 3 >>"%TEMP%\cmds.txt"
echo show_traces -t >>"%TEMP%\cmds.txt"
echo show_traces -v >>"%TEMP%\cmds.txt"
"c:\Program files\NuSMV\2.5.2\bin\NuSMV" -int short.smv -source "%TEMP%\cmds.txt"
del "%TEMP%\cmds.txt"