Windows批处理脚本:ENABLEDELAYEDEXPANSION + For循环无法按预期工作

马卡韦利84

我不确定如何使以下代码正常工作。该循环不会返回所有假定的文件,%%~FI只会在FOR循环开始时进行扩展在执行最后一条命令时,将"%%~FI"产生文字字符串,而不是扩展为所需的文件名:

SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%I IN (*.foo *.bar) DO (
    SET OFileBase=%%~DPNI
    ECHO "%%~FI" REM Expands correctly at this point
    :WhileLoop2
    IF EXIST "!OFileBase!.baz" (
        SET /A SuffixIndex += 1
        SET OFileBase=%%~DPNI [!SuffixIndex!]
        GOTO WhileLoop2
    )
    ECHO "%%~FI" REM Expands no more, now a literal string?!
    fooparser.exe --input "%%~FI" - | bazmaker.exe - "!OFileBase!.baz"
)
ENDLOCAL

我究竟做错了什么?

oo
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%I IN (*.foo *.bar) DO (
    SET OFileBase=%%~DPNI
    ECHO "%%~FI" REM Expands correctly at this point
    call :WhileLoop2 "%%~DPNI"
    ECHO "%%~FI" REM Expands no more, now a literal string?!
    fooparser.exe --input "%%~FI" - | bazmaker.exe - "!OFileBase!.baz"
)
ENDLOCAL
goto :eof

:WhileLoop2
IF EXIST "!OFileBase!.baz" (
 SET /A SuffixIndex += 1
 SET OFileBase=%~1 [!SuffixIndex!]
 GOTO WhileLoop2
)
goto :eof

总是很难处理一批孤立的部分-尤其是显然已被进一步消毒的部分。

您的问题是试图在block语句(带括号的一系列语句)中使用标签。这不是一个好主意-混淆FOR并终止循环。

由于您正在%%I内部循环中使用元变量,因此请将其作为带引号的参数(如果%%I包含分隔符)传递给子例程,然后访问子例程中的值,%~1从而删除引号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

批处理脚本无法按预期工作

来自分类Dev

处理对象数组时,For循环无法按预期工作

来自分类Dev

循环增量值ENABLEDELAYEDEXPANSION的批处理

来自分类Dev

为什么此批处理命令无法按预期工作?

来自分类Dev

事件处理无法按预期工作

来自分类Dev

Windows Batch GEQ无法按预期工作

来自分类Dev

ResizeObserver 在 Windows 上无法按预期工作

来自分类Dev

Echo 在我的 Windows 批处理脚本中无法正常工作

来自分类Dev

在循环批处理脚本(Windows,批处理脚本)的路径中使用findstr命令变量扩展

来自分类Dev

批处理脚本循环

来自分类Dev

SubString 在批处理脚本的 for 循环中无法正常工作

来自分类Dev

设置不适用于循环脚本Windows批处理

来自分类Dev

Windows批处理脚本在几次迭代后停止工作

来自分类Dev

Windows批处理脚本在几次迭代后停止工作

来自分类Dev

shell脚本:间接递归无法按预期工作(重复太多)

来自分类Dev

时区倒计时脚本,无法按预期工作吗?

来自分类Dev

Photoshop的Python脚本-resizeImage无法按预期工作

来自分类Dev

我的python脚本中的枚举无法按预期工作吗?

来自分类Dev

nohup ...&无法在docker脚本中按预期工作

来自分类Dev

Photoshop的Python脚本-resizeImage无法按预期工作

来自分类Dev

Redis Lua脚本无法按预期工作

来自分类Dev

时区倒计时脚本,无法按预期工作吗?

来自分类Dev

Shell脚本中的Perl内联替换无法按预期工作

来自分类Dev

实模式中断处理例程无法按预期工作

来自分类Dev

couchdb / cloudant更新处理程序无法按预期工作

来自分类Dev

FastAPI:无法使错误处理按预期方式工作

来自分类Dev

couchdb / cloudant更新处理程序无法按预期工作

来自分类Dev

无法从Windows批处理文件运行Shell脚本

来自分类Dev

无法从 Windows 批处理脚本构建 C 程序

Related 相关文章

  1. 1

    批处理脚本无法按预期工作

  2. 2

    处理对象数组时,For循环无法按预期工作

  3. 3

    循环增量值ENABLEDELAYEDEXPANSION的批处理

  4. 4

    为什么此批处理命令无法按预期工作?

  5. 5

    事件处理无法按预期工作

  6. 6

    Windows Batch GEQ无法按预期工作

  7. 7

    ResizeObserver 在 Windows 上无法按预期工作

  8. 8

    Echo 在我的 Windows 批处理脚本中无法正常工作

  9. 9

    在循环批处理脚本(Windows,批处理脚本)的路径中使用findstr命令变量扩展

  10. 10

    批处理脚本循环

  11. 11

    SubString 在批处理脚本的 for 循环中无法正常工作

  12. 12

    设置不适用于循环脚本Windows批处理

  13. 13

    Windows批处理脚本在几次迭代后停止工作

  14. 14

    Windows批处理脚本在几次迭代后停止工作

  15. 15

    shell脚本:间接递归无法按预期工作(重复太多)

  16. 16

    时区倒计时脚本,无法按预期工作吗?

  17. 17

    Photoshop的Python脚本-resizeImage无法按预期工作

  18. 18

    我的python脚本中的枚举无法按预期工作吗?

  19. 19

    nohup ...&无法在docker脚本中按预期工作

  20. 20

    Photoshop的Python脚本-resizeImage无法按预期工作

  21. 21

    Redis Lua脚本无法按预期工作

  22. 22

    时区倒计时脚本,无法按预期工作吗?

  23. 23

    Shell脚本中的Perl内联替换无法按预期工作

  24. 24

    实模式中断处理例程无法按预期工作

  25. 25

    couchdb / cloudant更新处理程序无法按预期工作

  26. 26

    FastAPI:无法使错误处理按预期方式工作

  27. 27

    couchdb / cloudant更新处理程序无法按预期工作

  28. 28

    无法从Windows批处理文件运行Shell脚本

  29. 29

    无法从 Windows 批处理脚本构建 C 程序

热门标签

归档