批处理文件在FOR /f之后不继续



下面的批处理文件运行:RUNRULES部分,对文件夹中的每个文件执行DO,在循环执行之后,事情变得很有趣。IF永远不会被执行。

ECHO被执行,但是ECHO命令没有回显,就像ECHO OFF被激活一样。IF也不回显。

::@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SET S1=Server1
SET S2=Server2
SET DATABASE=DbName
SET SCRIPT=foldersqlscript.sql
:S1
ECHO Running rules in S1
SET SERVER=%S1%
GOTO RUNRULES
:S2
ECHO Running rules in S2
SET SERVER=%S2%
GOTO RUNRULES
:RUNRULES
SET OUTPUTFILE=%SERVER%_folder.csv
COPY NUL %OUTPUTFILE% 
FOR /f %%f IN ('dir /b /on folder') DO (
    IF EXIST results.csv DEL /Q results.csv 
    CALL RunRule "%SERVER%" "%DATABASE%" "folder%%f" "results.csv"
    TYPE results.csv >>%OUTPUTFILE%
)
ECHO Past the FOR loop
IF %SERVER%==%S1% GOTO S2

RunRule是一个批处理文件,它包含一个ECHO OFF并将环境变量SERVER设置为另一个值,并在SERVER的值上添加引号。IF将SERVER的新值与最初设置的值进行比较,并且不执行,因为它们不相等。

最新更新