我试图写一个批处理文件来迭代地执行一个fortran编译的可执行文件.通常会进入
Windows命令提示符,键入’Model.exe’.这将显示一个dos命令窗口,要求用户在dos提示符下直接在命令窗口中键入所需的文件名.
我想写一个批处理文件,这将为我做这个一点,并且迭代这一步,这样我可以连续运行10个模拟,而不是手动执行.这种shell操作在linux中是直接的,但是我没有这个可用.
我的伪代码将如下所示:
对于/ L %%在(1,1,10)中运行
(set str = Sim %% run
echo.%str%> input.txt中
Model.exe< input.txt中) 您可以按照以下步骤解决这个问题:
>赋值变量’run’一个值. (例如1)
连接一个字符串(“Sim”)来创建一个新的变量“Sim1”
>将此回调到文本文件(“input.txt”)
>从文件“input.txt”读取变量“Sim1”
>可执行文件消失,做它的事情.
>重复步骤1 – > 5,但用新的变量calle“Sim2”等
我可以得到上面的工作,如果我使用set str = Sim1然后直接回应到“input.txt”,但我不能得到这个循环工作.我错过了什么吗?
最好的祝福,
本
呃,cmd.exe的变量扩展处理是丑陋的.所以,你需要“延迟扩展”,如下所示:
setlocal enabledelayedexpansion for /L %%i in (1,10) do ( set str=Sim%%i echo !str! > input.txt Model.exe < input.txt) endlocal
(当然,在这种特殊情况下,您可以只说回声Sim %%我> input.txt,但我认为有一个很好的理由,你想通过另一个变量.)