Put этот раздел в другой подпрограммы, подобно :strlen
echo(%result%
if %result% EQU 7999 (
echo %%a
echo(short=%result%
) else (
echo %%a
echo(long=%result%
)
Заметим также, что ваша основная программа будет продолжать работать в вашу подпрограмму, когда закончил, так что при конца-файла (reports.csv) партии будет выполнить :strlen
один последний раз и выйти через EXIT
Я бы рекомендовал добавить
GOTO :EOF
IMME до метки :strlen
. Это понимают процессор для перехода к конечному из-physiacl-файл (двоеточие требуется)
Когда соединение оператор, заключенный в скобках должны быть выполнен, оператора сначала анализируется с открытой скобки весь путь к близким скобкам.
В это время любой %var%
заменяется значением, которое var
«s из среды ВО ВРЕМЯ ОНО разобранные (т.е. его PARSE-TIME значение.)
ТОГДА если утверждение представляется действительным, оно выполняется.
Есть три распространенных способа доступа к RUN-TIME значение переменной (в качестве FOR
цикла выполняет, например.)
1/SETLOCAL ENABLEDELAYEDEXPANSION
, который переключается в режим, в котором ! Вар! может быть использованы для доступа к значению времени выполнения var
2/CALL set var2=%%var%%
, чтобы установить значение var2
от значения во время выполнения var
3/Исполнительное подпрограмму, внутренней или внешней, внутри которого %var%
будет значение времени выполнения.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%i IN (1 2 3) DO (
ECHO START of run %%i
ECHO using ^!time^! : !time! - PARSE TIME was %time%
CALL ECHO using CALL %%%%TIME%%%% : %%TIME%%
CALL :report
timeout /t 5
ECHO using ^!time^! : !time!
CALL ECHO using CALL %%%%TIME%%%% : %%TIME%%
CALL :report
ECHO END of run %%i
ECHO.
)
GOTO :eof
:report
ECHO :report says TIME is %TIME%
GOTO :eof
Несколько пунктов отметить:
Инструкция
IF ERRORLEVEL п эхо Равен п ИЛИ ПОВЫШЕНИЕ
ВСЕГДА интерпретирует значение RUN-TIME от ERRORLEVEL
IF SET VAR
ВСЕГДА интерпретирует значение RUN-TIME из VAR
magic variables
как ERRORLEVEL и TIME никогда не должны быть SET. Если выполнить
SET ERRORLEVEL = немой
затем ERRORLEVEL
примет значение dumb
, поскольку текущая значение в среде имеет приоритет над значением системы присвоены.