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

时间:2016-09-29 22:26:04

标签: windows batch-file cmd

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

执行ECHO,但不回显echo命令,就像ECHO OFF处于活动状态一样。 IF也没有回应。

::@ECHO OFF
SETLOCAL ENABLEEXTENSIONS

SET S1=Server1
SET S2=Server2
SET DATABASE=DbName
SET SCRIPT=folder\sqlscript.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

1 个答案:

答案 0 :(得分:0)

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