循环遍历批处理文件中的字符串(enableDelayedExpansion)

时间:2014-12-17 01:03:45

标签: string batch-file

我希望你可以帮我解决下面的代码...我已经在使用enableDelayedExpansion但我想知道为什么输出仍然与我之前使用的参数完全相同:

例如,如果我使用参数SERVERS:ALL运行我的脚本,我希望它输出SERVERS和ALL,但是当我第一次运行它时它总是显示第一个参数。想法?

set flag=false
setlocal enableDelayedExpansion
IF [%1] == [] (
  set flag=false
) else (
  set string=%1
  echo String: !string!
  set flag=true
  for %%x in (%string::= %) do (
    echo VAL is: %%x
    endlocal
  )
)

:END
popd
echo Ending %jobname% ... %check%
exit %check%

1 个答案:

答案 0 :(得分:0)

这是一种没有延迟扩展的方法。我遗漏了旗帜,因为它们没有明显的目的。

@echo off
if not "%~1"=="" (
   echo.input string=%~1
   call :ParseString "%~1"
   )
goto :eof

:ParseString
rem %1=string
for /f "tokens=1* delims=:" %%a in ('echo(%~1') do (
   echo VAL is: %%a
   call :ParseString "%%b"   
   )
goto :eof