2011-04-14 90 views
0

我试图创造出应该有这个命令的批处理文件:批处理文件并没有其他的.exe后完全执行,执行

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文件中进行更改。谢谢。

回答

4

穿戴在一个文本文件命令3-8,然后运行NuSMV如下(例如,cmds.txt):

NuSMV -int short.smv -source cmds.txt 

从手册(nusmv.pdf)第48页:

也可以使NUSMV读 并从文件中执行的命令 的序列,通过命令行选项 - 源: 系统提示> NuSMV -source CMD文件

2

完成维克的回答,您可以创建NUSMV在同一个BAT文件

@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" 
+1

+1,要完成它,您可以引用'“%TEMP \ cmds.txt”'来保护在临时路径中有空格。并美化你可以结合回声的像'(回声去&回声pich_state -r&回声print_current_state -v)>“%TEMP%\ cmds.txt”' – jeb 2011-04-15 08:41:26

+0

@jeb,谢谢,我已编辑,以反映您的建议 – 2011-04-15 09:32:11