2011-04-14 87 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