首页 > 解决方案 > 为什么我在循环中的参数没有更新

问题描述

我尝试循环进入文件夹中的所有文件并拆分文件名以将它们用作批处理文件中的输入参数。

有人可以解释一下,为什么当我第二次进入我的循环 FOR (等等)时,我在循环中的变量 for 似乎不再更新/识别?

当我尝试显示 FILENAME 变量时,我有“echo FILENAME : !FILENAME!” 但我希望“回显文件名:myfile.txt

当我用 2 个参数调用 PRINT 批处理时出现同样的问题,我希望使用“D:\App\Test\print.bat”testfolder myfile.txt”执行我的批处理,但我看到了“D:\App\Test\print.bat” “!arg1!!arg2!”

我在想这应该是由于 ENABLEDELAYEXPANSION 在第一个循环结束时结束,但我的 endlocal ENABLEDELAYEXPANSION 已放在我的批处理结束时。

所以我真的不明白发生了什么......

非常感谢您的帮助!

setlocal ENABLEDELAYEDEXPANSION

for %%i in ("D:\App\Result"\*.*) do (

   echo name : %%i
   set str=%%i

   for /f "tokens=1,2,3,4,5 delims=\" %%a in ("!str!") do (set DRIVELETTER=%%a&set DOMAIN=%%b&set NAME=%%c&set RESULT=%%d&set FILENAME=%%e)

   echo FILENAME: !FILENAME!

   set FOLDERNAME=!str:~0,5!
   echo FOLDERNAME : !FOLDERNAME!

   set arg1="D:\App\!FOLDERNAME!"
   set arg2="D:\App\!FILENAME!"
    
   D:\App\Test\print.bat !arg1! !arg2!

 )

 endlocal ENABLEDELAYEDEXPANSION

标签: loopsfor-loopbatch-file

解决方案


推荐阅读