0

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

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

2 回答 2

4

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

NuSMV -int short.smv -source cmds.txt

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

也可以通过命令行选项 -source: system prompt> NuSMV -source cmd file 使 NUSMV 从文件中读取并执行一系列命令

于 2011-04-15T03:44:18.430 回答
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"
于 2011-04-15T08:13:12.820 回答