批处理文件:for循环运行两次

use*_*866 3 windows for-loop batch-file

我正在尝试编写一个从ini文件中提取参数值的批处理.问题是这个for循环迭代两次:

call:ini DW_LOADER_FeedsRootDir UDM_Folder
:ini
for /f "tokens=2 delims==" %%U in ('find "%~1=" DW_environmentConfig.ini') do (
 set %~2=%%U
)
Run Code Online (Sandbox Code Playgroud)

批处理不会在此行之后结束,并且后面的所有命令也会重复两次.我不能在循环之后使用像'goto:eof'这样的命令.有没有人知道为什么会这样?

Raf*_*ael 5

当你使用CALL:INI批量调用你的函数时,当它结束时,它返回到CALL命令点,然后它:ini再次进入标签.

试试吧:

call:ini DW_LOADER_FeedsRootDir UDM_Folder
goto:eof
:ini
for /f "tokens=2 delims==" %%U in ('find "%~1=" DW_environmentConfig.ini') do (set %~2=%%U)
Run Code Online (Sandbox Code Playgroud)