У меня есть пакетный скрипт, похожий на этот:
for /f %%a IN ('"sqlcmd -S %SQLSERVER% -d %DATABASE% -h-1 -v product="Product1" -i %SCRIPTFOLDER%\GetVersionInfo.sql"') do (
set en=%%a
set VersionProduct1=!en: =!
)
GOTO FINDVERSIONS
******Some code in between*******
:FINDVERSIONS
sqlcmd -S %SQLSERVER% -d %DATABASE% -h-1 -v product="Product2" -i %SCRIPTFOLDER%\GetVersionInfo.sql
for /f %%a IN ('"sqlcmd -S %SQLSERVER% -d %DATABASE% -h-1 -v product="Product2" -i %SCRIPTFOLDER%\GetVersionInfo.sql"') do (
set en=%%a
set VersionProduct2=!en: =!
)
sqlcmd -S %SQLSERVER% -d %DATABASE% -h-1 -v product="Product3" -i %SCRIPTFOLDER%\GetVersionInfo.sql
for /f %%a IN ('"sqlcmd -S %SQLSERVER% -d %DATABASE% -h-1 -v product="Product3" -i %SCRIPTFOLDER%\GetVersionInfo.sql"') do (
set en=%%a
set VersionProduct3=!en: =!
)
REM construct product paths
SET ProductPath1=.\%VersionProduct1%
echo %VersionProduct2%
echo %VersionProduct3%
if not defined VersionProduct1 GOTO Product2
SET ProductPath2=.\%VersionProduct2%
:Product2
echo %ProductPath2%
echo here
SET ProductPath3=.\%VersionProduct2%
:END
Сценарий выполняет следующие действия:
Он запрашивает базу данных, чтобы получить версию установленного продукта, если продукт существуетвозвращает его версию, в противном случае строки не возвращаются.
Если возвращается номер версии, он сохраняется в переменной versionProduct, которая позже используется для создания переменной каталога для продукта.
Скажите, что product1 отсутствует в базе данных и не возвращает значения;следовательно, versionProduct1 никогда не определяется. Итак, я написал условие, если versionProduct1 не определено, перейдите к product2. Вывод после добавления команд SQL вне цикла:

Вывод объяснен:
. - Из одной из предыдущих строк в сценарии, не упомянутой здесь в коде.
Нет выходных данных для запуска команды SQL ранее для цикла 1 в блоке FindVersions (versionProduct2), так как он не существует
11.0.2 - запуск команды SQL для цикла 2 в блоке FindVersions (versionProduct3)
Эхо отключено - echo% VersionProduct2%
11.0.2 - echo% VersionProduct3%