如何批量退出for / f循环?

时间:2015-05-05 11:25:01

标签: batch-file batch-processing

我对我正在编写的批处理文件有疑问。

如何定义我的“for / f”循环只执行我脚本的一部分而不是整个脚本?

在下面的脚本中,我想要

我确切地说我需要使用“调用”方法(因为反弹的另一个问题)。

感谢您的帮助:)

    @echo off
  setlocal enabledelayedexpansion
  WMIC LOGICALDISK where drivetype=3 get caption>%~n0.tmp
  for /f "tokens=1-3 skip=1" %%a in ('type "%~n0.tmp"') do call :displayinfo %%a
del "%~n0.tmp"
goto :eof

:displayinfo
set drive=%1
echo Le drive est %drive%
echo lancement du DIR
REM call dir /A HS /s /b %drive%\ >> d:\Dir_ALL.txt
echo Fin du DIR

:step2
echo this is the step2, to be executed when the for /F loop is over.
echo blablalblablalballbabal

:step_End
echo Ths is the end
@pause

1 个答案:

答案 0 :(得分:3)

您需要进行两项更改。

  1. goto :eof行下方的for两行更改为goto :step2
  2. 添加goto :EOF作为:displayinfo方法的最后一行。这将导致该方法返回for循环。
  3. 应该是这样的。

    @echo off
    setlocal enabledelayedexpansion
    WMIC LOGICALDISK where drivetype=3 get caption>%~n0.tmp
    for /f "tokens=1-3 skip=1" %%a in ('type "%~n0.tmp"') do call :displayinfo %%a
    del "%~n0.tmp"
    goto :step2
    
    :displayinfo
    set drive=%1
    echo Le drive est %drive%
    echo lancement du DIR
    REM call dir /A HS /s /b %drive%\ >> d:\Dir_ALL.txt
    echo Fin du DIR
    goto :EOF
    
    :step2
    echo this is the step2, to be executed when the for /F loop is over.
    echo blablalblablalballbabal
    
    :step_End
    echo Ths is the end
    @pause