Windows 在批处理脚本中解析和更新变量时出现问题,FOR循环内外

Windows 在批处理脚本中解析和更新变量时出现问题,FOR循环内外,windows,for-loop,batch-file,Windows,For Loop,Batch File,我正在尝试构建Windows批处理文件,该文件应执行以下操作: 以参考图像为例(它应该是第一个图像,考虑到计数ima_0001.png,ima_0002.png…) 在第二步中,结构的获取序列中的图像(例如:ima_0001.png,imag_002.png,…),调用函数比较另一批处理文件中的图像,并用当前图像更新参考图像%defa% 除了两个主要步骤外,脚本的性能几乎良好: 我无法使用set“defa=ima_0001.png”直接设置引用或第一个文件,我尝试了不同的方法:defa=im

我正在尝试构建Windows批处理文件,该文件应执行以下操作:

  • 以参考图像为例(它应该是第一个图像,考虑到计数
    ima_0001.png
    ima_0002.png
    …)
  • 在第二步中,结构的
    获取序列中的图像(例如:
    ima_0001.png
    imag_002.png
    ,…),调用函数比较另一批处理文件中的图像,并用当前图像更新参考图像
    %defa%
除了两个主要步骤外,脚本的性能几乎良好:

  • 我无法使用
    set“defa=ima_0001.png”

    直接设置引用或第一个文件,我尝试了不同的方法:
    defa=ima_0001.png
    defa=!ima_0001.png留给
    结构,选择一个与第一个编号不一致的结构(需要
    ima_0064.png
    而不是
    ima_0001.png

    我感谢能帮助我手动或自动设置第一个的人

  • 最糟糕的是结构的第二个
    不会使用
    行
    设置“defa=%%h”

    例如,在
    的第一个循环
    之后,
    defa
    应该从
    ima_0001.png
    更改为
    ima_0002.png
    ,或者从
    ima_0064.png
    更改为
    ima_0065.png
    。但是,当控制台运行时,
    %%h
    会发生变化,但
    defa
    始终显示第一个图像(
    ima_0064.png
    )。我也尝试了不同的方法,但都没有成功,设置
    setlocal
    或不设置它。
    我感谢有人能给我一些想法来解决他的问题

  • 剧本是:

    @echo off
    setlocal enabledelayedexpansion
    cd C:\Users\docs
    
    set/a "th=870"
    REM Set the first file or take one with FOR 
    ::set "defa=ima_0001.png"
    FOR %%m in (1,1,*.png) do set "defa=%%m"
    REM BUCLE DE LLAMADA A LA FUNCIÓN Callme
    FOR %%h in (*.png) DO (
        Callme "%defa%" "%%h" %th%
        set "defa=%%h"
    )
    pause
    

    FOR%%m in(1,1,*.png)do
    -看起来您混合了pur
    FOR
    和a
    FOR/L
    的语法,以获得第一个(字母顺序)文件:
    FOR/f“delims=“%%m in('dir/b/on')如果未定义defa,请设置“defa=%m”
    (进入循环前确保
    defa
    未定义)谢谢Stephan。现在,defa的第一个值就是第一个文件ima_ooo1.pngWhat
    Callme
    ?应用程序(.exe)?另一个批处理脚本?谢谢Stephan。现在,第一个文件与第一个文件的数字顺序一致,尽管我有一个新问题,我将在一个新问题中发布。是的,Callme是一个函数,另一个批处理文件应用于第二个文件解析的文件,用于结构。