batch-file - for 循环中的多个 do 命令 : Echoing a string to a file and then redirecting to the command window

标签 batch-file redirect for-loop dos

我正在尝试编写一个批处理文件来迭代执行一个 Fortran 编译的可执行文件。通常,您会转到 Windows 命令提示符,键入“Model.exe”。这将打开一个 dos 命令窗口,要求用户在 dos 提示符下直接在命令窗口中键入所需的文件名。

我想编写一个批处理文件来为我做这件事,并迭代这一步,以便我可以连续运行 10 个模拟,而不必手动完成。这种 shell 操作在 linux 中很简单,但我没有这个。

我的伪代码如下所示:

for/L %%run in (1,1,10) 做
(设置 str=Sim%%run
echo.%str% > input.txt
模型.exe < 输入.txt)

您可以将其分解为以下步骤:

  • 为变量“运行”分配一个值。 (例如 1)
  • 将其与字符串(“Sim”)连接以创建一个新变量“Sim1”
  • 将此回显到文本文件(“input.txt”)
  • 从文件“input.txt”中读取变量“Sim1”
  • 可执行文件消失并做它的事情。
  • 重复步骤 1 -> 5,但使用新的变量调用“Sim2”等。

  • 如果我使用 set str=Sim1 然后将其直接回显到“input.txt”,我可以使上述工作正常工作,但我无法使其作为循环工作。我错过了什么吗?

    最好的问候,

    最佳答案

    呃,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
    

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

    关于batch-file - for 循环中的多个 do 命令 : Echoing a string to a file and then redirecting to the command window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109897/

    相关文章:

    Django自定义装饰器重定向问题

    php - PHP 中的重定向/返回检查

    apache-spark - 如何遍历pyspark中的每一行dataFrame

    windows - 如何在 Windows 批处理文件中使用多种颜色?

    python - 如何在不复制的情况下从 Windows 命令行合并两个目录或用替换移动?

    android - 亚马逊认知 : How to stop getting "redirect_mismatch" error when redirecting from browser to Android app

    java - 数组方法打印几乎是正确的,只有一个值关闭,我不知道为什么

    powershell - 检查列表以查看文件是否存在于 powershell 中?

    sql - 如何使用管道|作为批处理脚本中 SQL 查询的一部分

    Objective-C:在循环中从 NSString 中删除尾随逗号