Batch file for循环中的多个do命令:将字符串回显到文件,然后重定向到命令窗口

Batch file for循环中的多个do命令:将字符串回显到文件,然后重定向到命令窗口,batch-file,redirect,for-loop,dos,Batch File,Redirect,For Loop,Dos,我试图编写一个批处理文件,以迭代方式执行fortran编译的可执行文件。通常,人们会在windows命令提示符下键入“Model.exe”。这将打开一个dos命令窗口,要求用户在dos提示符下直接在命令窗口中键入所需的文件名 我想写一个批处理文件来完成这一点,并重复这一步,这样我就可以连续运行10个模拟,而不必手动完成。这种shell操作在linux中很简单,但我没有这种可用的 我的伪代码如下所示: 对于/L%%磨合(1,1,10)do (设置str=Sim%%run echo.%str%>in

我试图编写一个批处理文件,以迭代方式执行fortran编译的可执行文件。通常,人们会在windows命令提示符下键入“Model.exe”。这将打开一个dos命令窗口,要求用户在dos提示符下直接在命令窗口中键入所需的文件名

我想写一个批处理文件来完成这一点,并重复这一步,这样我就可以连续运行10个模拟,而不必手动完成。这种shell操作在linux中很简单,但我没有这种可用的

我的伪代码如下所示:

对于/L%%磨合(1,1,10)do
(设置str=Sim%%run
echo.%str%>input.txt
Model.exe 您可以将其分解为以下步骤:

  • 为变量“run”赋值。(例如1)
  • 将其与字符串(“Sim”)连接,生成一个新变量“Sim1”
  • 将其回显到文本文件(“input.txt”)
  • 从文件“input.txt”中读取变量“Sim1”
  • 可执行文件离开并执行它的操作
  • 重复步骤1->5,但使用名为“Sim2”等的新变量
  • 如果我使用set str=Sim1,然后将其直接回显到“input.txt”中,我可以让上面的内容正常工作,但我无法让它作为循环工作。我错过什么了吗

    致以最良好的祝愿


    Ben,cmd.exe对变量展开的处理很糟糕。因此,您需要“延迟扩展”,如下所示:

    setlocal enabledelayedexpansion
    for /L %%i in (1,1,10) do (
    set str=Sim%%i
    echo !str! > input.txt
    Model.exe < input.txt)
    endlocal
    
    setlocal enabledelayedexpansion
    对于(1,1,10)do中的/L%%i(
    设置str=Sim%%i
    echo!str!>input.txt
    Model.exe

    (当然,在这种特殊情况下,您可以只说
    echo Sim%%i>input.txt
    ,但我认为您希望通过另一个变量进行操作是有充分理由的。)

    请允许我欢迎您使用StackOverflow,并提醒我们通常在这里做的三件事:1)当您收到帮助时,当你看到很好的问答时,请投票给他们,因为系统的可信度是基于用户通过分享知识而获得的声誉。还记得接受更好地解决你的问题的答案,如果有的话,“本,如果它有效的话,考虑接受,并最终推翻加里斯的答案。