Atualmente, estou usando o Cruise Control para agendar 'builds' para vários sites internos. Eu uso arquivos em lote para iniciar cada uma dessas 'compilações' (compilação que significa uma saída específica para webhelp). Digamos que, por exemplo, temos compilações internas, externas e públicas. Dentro do arquivo mestre de lote, você encontrará o seguinte código:
if x%TargetName:-Internal-=%==x%TargetName% goto ReplaceNav
if x%TargetName:-External-=%==x%TargetName% goto SkipSearch
if x%TargetName:-Public-=%==x%TargetName% goto SkipSearch
:: do not uncomment or the skin will not get copied to the output
Então, deixe-me explicar o que está acontecendo aqui. A variável% TargetName% já está definida para um valor antes que essa parte do script seja executada. A variável% TargetName% conterá o texto -Internal, -External ou -Public e terá outros caracteres no início ou no final de cada nome de destino, mas a coisa pela qual eu quero ter uma declaração condicional é se o script Veja -Internal na variável% TargetName%, o script irá pular para um bloco de código rotulado: ReplaceNav. Aqui está o que: ReplaceNav parece.
:ReplaceNav
echo.
echo -----------------------------------------------------------------
echo Replacing Navigation.htm and Search.htm files
echo TargetName is %TargetName%
echo CurrUser is %CurrUser%
echo -----------------------------------------------------------------
echo.
pushd ..\..\some\dir\MasterPages
copy /y "Navigation1.COPY" "..\..\..\Output\%CurrUser%\%TargetName%\Skin\Navigation.htm" 2>&1
IF %ERRORLEVEL% NEQ 0 (
echo.
echo Failed to replace Navigation.htm file with Exit Code: %ERRORLEVEL%
echo.
exit /b %ERRORLEVEL%
)
copy /y "Search.COPY" "..\..\..\Output\%CurrUser%\%TargetName%\Skin\Search.htm" 2>&1
IF %ERRORLEVEL% NEQ 0 (
echo.
echo Failed to replace Search.htm file with Exit Code: %ERRORLEVEL%
echo.
exit /b %ERRORLEVEL%
)
popd
O ReplaceNav essencialmente substitui dois arquivos na saída da webhelp por duas páginas personalizadas que contêm um mecanismo de pesquisa disponível apenas para usuários internos.
Se a variável% TargetName% contiver -External ou -Public, o arquivo em lote DEVE pular para a seção: SkipSearch do arquivo em lotes.
:SkipSearch
echo.
echo -----------------------------------------------------------------
echo Skipped Search and Navigation Replacement
echo -----------------------------------------------------------------
echo.
O meu problema é o seguinte (e tenho a certeza que tem a ver com a não estruturação adequada da instrução IF): Como estruturo este bloco de código
if x%TargetName:-Internal-=%==x%TargetName% goto ReplaceNav
if x%TargetName:-External-=%==x%TargetName% goto SkipSearch
if x%TargetName:-Public-=%==x%TargetName% goto SkipSearch
:: do not uncomment or the skin will not get copied to the output
para percorrer corretamente a variável% TargetName% para ver se ela tem o valor de -Internal, -External ou -Public e, em seguida, pule para o bloco de código correto no meu script? Atualmente, parece avaliar o
if x%TargetName:-Internal-=%==x%TargetName% goto ReplaceNav
declaração, mas não importa o que está substituindo as páginas de navegação em compilações com -Externo e -Público também :( Eu também deve mencionar que esta declaração if não foi escrita por mim em tudo e se você pode pensar em algum outro maneira de analisar a variável% TargetName% para -Internal, -Public ou -External eu sou tudo para ele.
Eu entendo isso como uma pergunta estranha, então, por favor, deixe-me saber se você precisa de mais detalhes para poder responder.